Bueno, a mi me pasa algo parecido a este ultimo caso, y no he conseguido resolverlo
Mi code es casi igual... Sí, lo hice en 5 segundos, muy currado verdad?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main (int argc, char *argv [])
{
if (argc != 2) return 1;
char buffer [40];
}
Pues le meto 200 Bs y no me sobreescribe...
(gdb) r $(perl -e 'print "B"x200')
The program being debugged has been started already.
Start it from the beginning? (y or n) y
Starting program: /home/juanra/Escritorio/vuln $(perl -e 'print "B"x200')
Program received signal SIGSEGV, Segmentation fault.
0x0804840f in main (argc=Cannot access memory at address [b]0x42424206[/b]
) at vuln.c:10
10 }
(gdb)
Entonces si le cambio el valor de B, me pone el hexadecimal de la letra que haya puesto. Pero si en vez de doscientos le meto 500 el resultado es igual. Entonces hay un byte "intocable". El ultimo. Como puede ser?
Si no consigo sobreescribirlo no puedo seguir xD
Gracias por vuestra ayuda