Hace unos días, empecé a leer un artículo sobre eludir SSP / ProPolice y, después de leer todo, probé los bypass, pero no funcionaron. Este es el código que utilicé:
int f (char ** argv){
int pipa; // useless variable
char *p;
char a[30];
p=a;
printf ("p=%x\t -- before 1st strcpy\n",p);
strcpy(p,argv[1]); // <== vulnerable strcpy()
printf ("p=%x\t -- after 1st strcpy\n",p);
strncpy(p,argv[2],16);
printf("After second strcpy ;)\n"); }
void main (int argc, char ** argv){
f(argv);
execl("back_to_vul","",0); //<-- The exec that fails
printf("End of program\n"); }
Y el comando de compilación es: gcc -fstack-protector -z execstack -o f f.c Básicamente, mi problema es la variable de reordenación que coloca & p y & a sobre su búfer, de modo que no puedo sobrescribir la dirección de p mediante el envío de un búfer grande. ¿Cómo podría evitar esto?