Debugeando un poco hay otra parte que no entiendo, la pila va creciendo hacia direcciones de memoria inferiores conforme se van definiendo las variables, por eso el ESP cada vez tiene un valor inferior.
El EIP y EBP siempre deberían ser zonas de memoria superiores al ESP pero gdb me muestra lo siguiente poniendo un breakpoint en 0x08048466 <+35>: leave
(gdb) info registers
esp 0xbffff6b0 0xbffff6b0
eip 0x8048466 0x8048466 <main+35>
0xbffff6b0 > 0x8048466 => ESP > EIP
El exploit creo que no funciona por esta razón, cuando gets rellena la variable buffer esta crece hacia direcciones de memoria superiores pero el EIP que es la dirección que nos interesa sobreescribir se encuentra por abajo, no llegando nunca a ella y no sobreescribiéndola nunca.
Si alguien pudiese aclararmelo se lo agradecería.
El EIP y EBP siempre deberían ser zonas de memoria superiores al ESP pero gdb me muestra lo siguiente poniendo un breakpoint en 0x08048466 <+35>: leave
(gdb) info registers
esp 0xbffff6b0 0xbffff6b0
eip 0x8048466 0x8048466 <main+35>
0xbffff6b0 > 0x8048466 => ESP > EIP
El exploit creo que no funciona por esta razón, cuando gets rellena la variable buffer esta crece hacia direcciones de memoria superiores pero el EIP que es la dirección que nos interesa sobreescribir se encuentra por abajo, no llegando nunca a ella y no sobreescribiéndola nunca.
Si alguien pudiese aclararmelo se lo agradecería.