Post

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: ret2win

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: ret2win

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.

Exploit

lib

This post is licensed under CC BY 4.0 by the author.