Ejecutar la variable de entorno del formulario mientras la pila no es ejecutable

2

Sucedió algo extraño. He creado EGG = NOPs + shellcode. Entonces me sale la dirección de EGG;

Hiceundesbordamientodebúferysaltéaélyobtuveelshell(ladireccióndelshelleselsegundoparámetro).¿Cómoesestoposiblesilapilanoesejecutable?

    
pregunta user2779060 29.12.2014 - 21:10
fuente

1 respuesta

1

Eso es seguro porque no estás ejecutando nada en la pila. Sin el binario en cuestión, intentaré adivinar qué está sucediendo aquí.

Con el primer print "A"*268 + '\x68\x96\x04\x08' probablemente esté sobrescribiendo un puntero para apuntar a 0x08049668 . Esta dirección es probablemente una entrada GOT para una función llamada más tarde como printf() o exit() .

Luego, en el segundo argumento, especifique el valor al que apunta el puntero. En otras palabras, sobrescribe esa entrada GOT ( 0x08049668 ) con tu dirección de código de shell ( 0xbffff891 ).

Entonces, cuando el programa llame a esa función de biblioteca compartida ( exit() , printf() , whatever() , ...), se llamará a su código de shell, porque se ha sobrescrito.

En este proceso, no se coloca ningún código en la pila. Se sobrescribe un puntero en la pila. Eso es todo. Luego, utiliza ese puntero sobreescrito para sobrescribir una dirección de función de biblioteca compartida con la dirección del código de shell.

    
respondido por el zuazo 09.10.2016 - 00:30
fuente

Lea otras preguntas en las etiquetas