Sto cercando di fare un overflow del buffer stack con il codice qui sotto su Ubuntu (e anche su CentOS 5.4). Posso sovrascrivere l'indirizzo di ritorno con una lunghezza specificata di input. ma se inserisco più caratteri di quelli, l'indirizzo di ritorno non può essere sovrascritto.
#include <stdio.h>
#include <string.h>
int main(int argc,char **argv){
char ss[40];
strcpy(ss,argv[1]);
printf("%s",ss);
return 0;
}
(Il programma è compilato con l'opzione -f-no-stack-protector in gcc)
Qualcuno può descrivere il motivo?
E puoi suggerire qualsivoglia versione del sistema operativo che potrei addestrare lo stack-buffer-overflow?