ROP: encontrar un pivote de pila útil

1

Estoy tratando de escribir una cadena de rop para omitir dep en Windows 7 x64 SP1.

Estoy trabajando en un exploit de sobrescritura de SEH y, en primer lugar, necesito volver a mi búfer después de que se active la excepción y se retire el ESP. Mi problema es que no puedo encontrar un buen gadget de stackpivot debido a los badchars y la distancia demasiado grande del gadget existente que podría usar para volver a mi búfer.

Durante la sobrescritura puedo ver el registro ECX que apunta a mi búfer y sé el desplazamiento. Pero me parece que su valor cambia al mismo tiempo que se aleja el ESP. Por lo tanto, no puedo volver a mi búfer para iniciar mi cadena de cable.

¿Cómo puedo abordar para resolver este problema? Alguna sugerencia ?

    
pregunta Kartone 27.07.2017 - 22:23
fuente

1 respuesta

1

Siento que tuve el mismo problema pero logré que funcionara en mi caso. El módulo con el desbordamiento tenía DEP habilitado, así que pensé que no iba a funcionar.

Todo lo que hice fue apuntar el EIP a un JMP ECX en nSEH y SEH solo para estar seguro, pero no funcionó.

Después de pensar que se había perdido la esperanza, me di cuenta de que en mi caso había una excepción irrecuperable y que no estaba llamando a mi controlador SEH porque el desbordamiento de búfer estaba fuera de los límites de la pila de módulos.

Descubrí el tamaño de pila actual exacto y modifiqué mi desbordamiento para usar menos bytes, por lo que termina justo antes de abandonar el marco de pila.

Esto era todo lo que necesitaba hacer y mi JMP ECX dentro de la SEH giró con éxito en mi búfer y me permitió comenzar a ejecutar la cadena de rop en la que estaba trabajando. Espero que esto ayude a que me quede despierto toda la noche trabajando en ello.

    
respondido por el patrick 07.09.2017 - 09:05
fuente

Lea otras preguntas en las etiquetas