BufferOverflow: ESP y violación de acceso

0

El contexto:

Tengo una pequeña pregunta con respecto a ESP y violación de acceso. Acabo de explotar un desbordamiento de búfer, con poco espacio después de ESP. Así que hice esto:

parte 1: NOP SLED

parte 2: mi shellcode: una carga útil shikata_ga_nai codificada reverse_tcp, por metasploit

parte 3: algunos NOP más para llenar el espacio

parte 4: 4 bytes que sobrescriben el EIP guardado en la pila. Esta es la dirección de una instrucción ESP de salto en un segmento no protegido por ASLS.

parte 5: [Aquí es donde ESP apunta en el momento del accidente] Tengo algo de NOP

parte 6: la primera etapa de mi exploit:

para la primera etapa, evitando \ x00 bytes, lo hice:

mov eax,esp
sub eax,944 (point to the part1 : the NOP sled)
jmp eax

Funcionó bien: la pila se sobrescribe, EIP va a la instrucción jmp ESP, llega a la parte 6 del exploit, salta a EAX, que apunta a la parte 1 del exploit, y luego ejecuta el NOP para llegar al shellcode.

problema: obtuve una infracción de acceso dentro del decodificador shikata_ga_nai.

Lo resolví, agregando un mov esp, eax en la primera etapa:

mov eax,esp
sub eax,944 (point to the part1 : the NOP sled)
mov esp,eax
jmp esp

Y funcionó a la perfección. Eso significa que uno no puede jugar con la memoria en direcciones más bajas que ESP.

La pregunta:

¿ESP tiene realmente algo que ver con el permiso de lectura / escritura dentro (fuera de la pila)? La memoria allí fue asignada, así que la usé. ¿Tiene EBP u otro registro algo que ver con la violación de acceso?

    
pregunta Jeremy 09.07.2017 - 21:20
fuente

1 respuesta

0

No, ambos registros solo apuntan a direcciones de pila, con ESP como la parte superior de la pila y EBP la base del marco de pila (generalmente).

    
respondido por el wireghoul 14.07.2017 - 04:21
fuente

Lea otras preguntas en las etiquetas