Solución Ropemporium ret2csu
Introducción
Este es el ultimo post de ropemporium. El enunciado del challenge nos indica que tiene similitudes con callme. Simplemente tendremos que llamar a ret2win() con 3 parámetros, de la siguiente forma: ret2win(0xdeadbeefdeadbeef, 0xcafebabecafebabe, 0xd00df00dd00df00d)
Direcciones de gadgets y funciones
Comenzamos como es de costumbre con pwndbg, en este caso analizaremos la funcion usefulFunction. Como podremos ver en la siguiente imagen, se realiza un call a ret2win() con su direccion en memoria: 
El inconveniente que tenemos es la falta de un gadget que nos permita hacer pop rbx, asi que tendremos que seguir analizando el codigo.
Por suerte, si dumpeamos la funcion__libc_csu_init_, podremos ver que contiene un pop rbx: 
Vale, necesitamos ahora el gadget número dos que tendría que ser un mov rdx rsi, pero otra vez si buscamos gadgets no hay ninguno, si nos fijamos otra vez en la función __libc_csu_init de allí sacaremos el gadget 0x0000000000400680 <+64>: mov rdx,r15
Y por último, nos faltaría st_value ubicado en 0x4003b0, la región de memoria donde se inicia _fini. Dejo el paper de la blackhat donde lo explica detalladamente.
