catena ROP. In qualche modo due byte vengono sovrascritti

1

Sto imparando a conoscere le catene ROP. Sto affrontando un comportamento che non riesco a spiegare.

Questo è il mio codice di esempio:

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

Creo una catena ROP che inizia così:

p = 'A'* 212

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

Tuttavia quando eseguo l'exploit ottengo un errore di segmentazione.

Stopped reason: SIGSEGV
0xbf00bd06 in ?? ()

Per me, sembra che per qualche motivo i primi due byte dell'indirizzo che ho usato nella catena ROP ( 0x080bbd06 ) vengano sovrascritti ( 0xbf00bd06 ). Non so perché questo succede. Qualche idea su come risolvere questo problema?

    
posta alive-and-well 10.07.2017 - 12:00
fonte

0 risposte

Leggi altre domande sui tag