cadena ROP. De alguna manera se sobrescriben dos bytes

1

Estoy aprendiendo sobre las cadenas de ROP. Me enfrento a un comportamiento que no puedo explicar.

Este es mi código de ejemplo:

int main(int argc, char* args[]) {  
    char text[200];
    scanf("%s", text);
    return 0;
}

Creo una cadena ROP que comienza así:

p = 'A'* 212

p += pack('<I', 0x0806ea3a) # pop edx ; ret
p += pack('<I', 0x080eb060) # @ .data
p += pack('<I', 0x080bbd06) # pop eax ; ret

Sin embargo, cuando ejecuto el exploit obtengo un error de segmentación.

Stopped reason: SIGSEGV
0xbf00bd06 in ?? ()

Para mí, parece que, por algún motivo, los dos primeros bytes de la dirección que usé en la cadena ROP ( 0x080bbd06 ) se sobrescriben ( 0xbf00bd06 ). No sé por qué sucede esto. ¿Alguna idea de cómo arreglar esto?

    
pregunta alive-and-well 10.07.2017 - 12:00
fuente

0 respuestas

Lea otras preguntas en las etiquetas