El puntero de EIP se sobrescribe pero EBP permanece intacto

2

Estaba probando un exploit de desbordamiento de búfer de pila simple al crear un archivo crash.m3u malicioso.

como puede ver, el puntero de EIP se sobrescribe con "A" pero EBP no ha cambiado. ¿No se supone que EBP se sobrescriba antes del EIP?

    
pregunta Abbas Javan Jafari 23.02.2014 - 18:13
fuente

1 respuesta

1

Bueno, ¡los registros no son valores en la memoria esperando a ser sobrescritos por su búfer!

En el contexto de un desbordamiento de búfer, no solo sigue escribiendo hasta que llegue a alguna "ubicación" del registro EIP: en cambio, reemplaza los valores en la pila y uno de ellos puede terminar siendo la dirección de retorno de su función. Una vez que haya sobrescrito la pila, la ejecución se reanuda como si nada hubiera sucedido. Las instrucciones se llevan a cabo y, dependiendo de cuáles sean, el EBP puede o no modificarse.

Finalmente, siempre que no haya ocurrido una excepción en el medio, alcanzas el ret de la función. Ahí es cuando el valor de retorno se lee de la pila y se mueve a EIP.

Entonces, en su caso, si nunca se llega a la instrucción ret , todavía hay algunas formas de obtener la ejecución del comando. El candidato más probable aquí es a través de manipulación de SEH .

¡Diviértete!

    
respondido por el executifs 24.02.2014 - 12:55
fuente

Lea otras preguntas en las etiquetas