IOLI Crackme 0x00 Writeup

IOLI Crackme 0x00 Writeup

Este es el primer post de la categoría reversing que hago, por lo que cualquier recomendación para mejorar es bienvenida :)

Para empezar la categoría de reversing voy a ir subiendo las soluciones explicadas de los IOLI crackmes de linux, se pueden descargar aquí.

Voy a estar usando la herramienta binary ninja, que nos permite ver el código que se ejecuta en el ELF.

Antes de ponernos a analizar el código, ejecutamos el archivo para ver qué nos pide.

Ejecución IOLI 0x00

Vemos que nos pide una contraseña. He puesto 0000 pero es incorrecta, por lo que vamos a investigar más a fondo qué hace este programa.

Abrimos el crackme en Binary Ninja, y nos dirigimos a la función main, donde está el código que nos interesa:

Main IOLI 0x00

Podemos ver que carga en memoria las frases:

"IOLI Crackme Level 0x00\n"

y

"Password:"

para después imprimirlas por pantalla (printf), como hemos visto en la ejecución del programa al principio.

Después de imprimir estas dos cadenas de texto compara el texto introducido (scanf) con una variable previamente definida en la sección .rodata del ELF.

Aquí Binary Ninja ya nos dice la solución a este crackme, pero podemos inspeccionar la sección .rodata manualmente para comprobar:

Password en rodata

Después de esta comparación, si el valor introducido es el mismo que el de la variable (250382), nos devuelve “Password OK :)”.

Nota: Si hubiéramos mirado las cadenas de texto directamente con el comando strings sobre nuestro fichero, podríamos haber adivinado que esta era la contraseña sin inspeccionar el ejecutable, pero eso no sería divertido ;).

Metemos la contraseña y, efectivamente, funciona!

Solucion


Este artículo ha sido redactado con fines educativos. Cualquier acción derivada de este artículo que no tenga dicho fin entra en conflicto con nuestro propósito de hacer divulgación de contenido educativo, y es objeto de nuestra condena más enérgica.

caveeroo
comments powered by Disqus