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?