Estoy tratando de explotar un pequeño programa. El programa tiene este aspecto:
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);
}
Utilicé ROPgadget para crear una cadena de ROP. La herramienta encuentra un gadet que es necesario para el ataque:
Gadget found: 0x8058fcc pop edx ; ret
Mi cadena de ROP comienza así:
p = ‘rnd padding’
p += pack('<I', 0x08058fcc) # pop edx ; ret
Sin embargo, cuando ejecuto mi exploit obtengo:
Stopped reason: SIGILL
0x08058fcc in _int_memalign ()
El EIP apunta a la dirección calculada por ROPgadget pero de alguna manera no es el comando correcto.
EIP: 0x8058fcc (<_int_memalign+108>: lock mov eax,esi)
¿Qué me estoy perdiendo?
Saludos