Quando scarico una copia di un programma vulnerabile e provo a sfruttarlo tramite buffer overflow (qualsiasi funzione interna che chiama come payload), funziona.
Tuttavia, quando ho realizzato uno stesso tipo di programma vulnerabile in C, non sono in grado di sfruttarlo e non ho idea di cosa possa andare storto. Verifica su gdb
Capisco che sono in grado di sovrascrivere l'indirizzo di ritorno nello stack, ma continuo ad avere un errore di segmentazione e il mio indirizzo desiderato non viene eseguito.
Il programma vulnerabile:
#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");
}
Voglio eseguire la funzione over()
e ho usato il payload
printf "aaaaaaaa\xb3\x84\x04\x08" | ./my