Estoy intentando explotar un programa utilizando una vulnerabilidad de cadena de formato.
Estoy tratando de reescribir un puntero GLT de la función printf
(usando un ataque de cadena de formato) para que apunte a mi código de shell. Obtuve la dirección del puntero al desensamblar la función principal y coloqué el código shell, que quiero ejecutar, en un búfer del programa vulnerable. Igot la dirección del comienzo del shellcode en gdb
(usando find
).
Escribí la dirección del comienzo de mi código de shell en el got.plt de printf
.
Cuando ejecuto mi exploit en gdb funciona bien. Sin embargo, fuera de GDB no funciona.
Desconecté las variables de entorno LINES
y COLOUMNS
dentro de gdb
(estas son las únicas variables que difieren del entorno fuera de gdb
) y llamé al programa usando la ruta completa (por ejemplo, /home/user/vuln
- en gdb y fuera).
¿Qué me estoy perdiendo?