El objetivo de la prueba es modificar un espacio en memoria para lograr sobreescribir la pila.



Esta prueba muestra la vulnerabilidad que puede haber en memoria.

Nota importante: Cada vez que hago esto, coloco intrucciones a gdb que creo son muy necesarios, ya que cada que el debugger abre una aplicación, lo hace en un espacio de memoria relativa y al colocarle, unset env LINES y unset env COLUMNS, GDB muestra el uso de memoria real o muy cercano al que usa realmente la aplicación, facilitando la explotación de la vulnerabilidad.

Ejecutamos la aplicación para ver que hace.



Encontramos printfs que utiliza la aplicación.



Vamos analizando el código y encontramos un printf que menciona sobre un puntero a una función.





Si revisamos la función, podremos encontrar que ahí se encuentra el mensaje que buscamos.



El espacio en memoria que buscamos esta reservado con malloc. Cuando lo buscamos se puede ver que esta definido por 0x40 = 64 más ret y ebp, sería 72 + 1 para lograr overflow, veamos.





Bien, como podemos observar, si metemos los 4 BBBB, podemos sobreescribir la pila y lograríamos llegar al objetivo.



Ponemos la dirección de la función y veamos que pasa ahora.



Hagamoslo en la práctica.



Listo.