Post

Solución ropemporium split

Split

El título del challenge nos dice lo siguiente:

“Los elementos que te permitieron completar ret2win aún están presentes, simplemente se han dividido. Encuéntralos y recombínalos usando una corta cadena ROP. Así que estaremos haciendo otro ret2win.”

Empezamos analizando las protecciones del binario. Tenemos NX activado, una protección de prevención de ejecución de datos cuyo propósito es evitar la ejecución de instrucciones a bajo nivel.

Protecciones del binario

Al ejecutar el binario, observamos que nos solicita un input.

Ejecución del binario

Creamos un patrón con cyclic.

Cyclic pattern

Observamos un desbordamiento de búfer, y determinamos que el offset es de 40 bytes.

Offset del desbordamiento

Dado que en el challenge sabemos que debemos realizar un llamado a la dirección que ejecuta /bin/cat flag.txt, buscamos los strings utilizando rabin2 para obtener la dirección de memoria.

Dirección de memoria debin/cat flag.txt

Necesitamos obtener la dirección de system. Para ello, utilizamos objdump de la siguiente manera.

Dirección de system

Ahora necesitamos encontrar las instrucciones pop rdi; ret y ret. Utilizaremos ROPgadget para esto.

ROP gadgets

Ahora que tenemos toda la información necesaria, podemos construir nuestro exploit para leer la flag.

Exploit

Exploit

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