我正在尝试利用一个小程序。该程序看起来有点像这样:
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);
}
我使用ROPgadget构建了一个 ROP 链。该工具会找到攻击所需的 gadet:
Gadget found: 0x8058fcc pop edx ; ret
我的 ROP 链是这样开始的:
p = ‘rnd padding’
p += pack('<I', 0x08058fcc) # pop edx ; ret
但是,在执行我的漏洞利用时,我得到:
Stopped reason: SIGILL
0x08058fcc in _int_memalign ()
EIP 指向由 ROPgadget 计算的地址,但不知何故它不是正确的命令。
EIP: 0x8058fcc (<_int_memalign+108>: lock mov eax,esi)
我错过了什么?
干杯