Estoy tratando de hacer un ataque de desbordamiento de búfer para un código vulnerable dado. Pero parece que va mal porque, aunque mis cadenas de exploits no corrompen la pila, no puedo hacer que mi código de ensamblado (incrustado en la cadena de exploits) funcione.Ninguna función contiene contador de programa para el cuadro seleccionado
Aquí está la pieza de valores de memoria antes de la ejecución de la instrucción 'ret' del programa que quiero atacar.
0x55683984: 0x5568398c 0x...(old r.a) 0x68e322a1 0x0000c31c
0x55683994: 0xf7fa9400 0x0804a3d7 0x556839c0 0xf7e518d0
En este punto, las cosas van mal porque no puede sacar la pila y hacer punto EIP% al valor de estallar? Así que mi código de ensamblaje de exploit no funciona. (0x68e322a1 0x0000c31c) Gdb dice que ninguna función contiene el contador de programa para el cuadro seleccionado. y cuando intento ejecutarlo sin depuración, causa un error de segmentación.
¿Tiene este problema algo que ver con la longitud de mi ensamblaje? (en este caso es 6)?
Program received signal SIGSEGV, Segmentation fault.
0x5568398c in ??()
(gdb) x 0x5568398c
0x5568398c: 0x68e322a1
¿cómo puede suceder esto cuando puedo ver qué hay dentro de la dirección que causa segfault?
Usted puede usar '' disassemble' o/10i $ eip' para ver el código donde segfaulted y 'bt' para ver la x pila de llamadas. Sería más fácil ayudar si mostraras el código que estás tratando de ejecutar (si es el 68 e3 ... parece que tiene un byte cero aislado incrustado). Por cierto, si esto es para la tarea debe marcarlo como tal. – user786653
Utilicé el diseño asm para ver qué está sucediendo y eso no ayudó. Además, ahora que mi código de explotación finalizó con un c3 (que significa instrucción ret), un byte cero aislado no es un problema. El punto clave aquí es que accidentalmente trato de alcanzar una dirección de memoria que probablemente no está definida. – bfaskiplar