Tag Archive for disassemble

GDB orientado a Pentesting – Parte 3

Continuamos con esta serie de artículos sobre depuración de programas orientados al pentesting y la ingeniería inversa. En los artículos anteriores de esta serie GDB orientado a Pentesting vimos cómo podíamos depurar simples programas hechos en C que contenían sus símbolos de depuración, lo cual facilita mucho la depuración, así como programas que no incluyen estos símbolos, algo bastante más habitual cuando estamos realizando una tarea de pentesting o reverse engineering.

Si no has leído esos artículos, antes de leer este te aconsejo que le eches un vistazo. Los podrás encontrar en los siguientes enlaces:

GDB orientado a Pentesting – Parte 1

GDB orientado a Pentesting – Parte 2

En esta ocasión vamos a ver cómo podríamos “crackear” un simple programa desarrollado en C. El programa es muy simple; se le pasa como argumento un código, si es correcto mostraré un mensaje diciendo que el código secreto es correcto, en caso contrario indicaré que es erróneo.

Aquí podemos plantear dos opciones; hacer un simple “bypass” del programa, para que introduciendo cualquier cosa obtengamos el mensaje correcto, o intentar localizar el registro donde se almacena temporalmente el código correcto con el que compará lo que nosotros hayamos introducido como argumento.

En esta tercera parte de la serie haremos un bypass, de forma que da igual el valor que introduzcamos, siempre pasaremos con éxito la autenticación. El programa lo he llamado codigoSecreto y su sintaxis es la siguiente:

./codigoSecreto 123456

GDB orientado a Pentesting

Podemos observar que con los distintos código, al ser incorrectos, obtenemos el mensaje correspondiente de error.

Veamos esto mismo pero ya con nuestro GDB depurando el programa.

GDB orientado a Pentesting

Read more