Sto cercando di sfruttare un piccolo programma. Il programma sembra un po 'come questo:
int func(void) {
char text[100];
scanf("%s", text);
return 0;
}
int foo(unsigned short rand) {
char RandomBuffer[rand];
return func();
}
int main(int argc, char* args[]) {
srand(time(NULL));
return foo(rand() % 1000);
}
Ho usato ROPgadget per costruire una catena ROP. Lo strumento trova un gadget necessario per l'attacco:
Gadget found: 0x8058fcc pop edx ; ret
La mia catena ROP inizia così:
p = ‘rnd padding’
p += pack('<I', 0x08058fcc) # pop edx ; ret
Tuttavia quando eseguo il mio exploit ottengo:
Stopped reason: SIGILL
0x08058fcc in _int_memalign ()
L'EIP punta all'indirizzo calcolato da ROPgadget ma in qualche modo non è il comando corretto.
EIP: 0x8058fcc (<_int_memalign+108>: lock mov eax,esi)
Cosa mi manca?
Saluti