Buffer Overflow测试异常:RIP未被预期地址覆盖的问题
栈溢出漏洞测试中的RIP覆盖异常问题
测试1:成功覆盖RIP场景
在GDB中执行以下命令测试栈溢出:
(gdb) r $(python3 -c 'print(b"\x41"*152+"\x42"*6 )') (gdb) i r ... rbp 0x4141414141414141 0x4141414141414141 rsp 0x7fffffffe420 0x7fffffffe420 rip 0x424242424242 0x424242424242 ...
测试结果符合预期,RIP被成功覆盖为0x424242424242(对应字符BBBBBB)。
测试2:RIP覆盖失败场景
当使用目标地址0x7fffffffe370测试时,执行命令:
r $(python3 -c 'print(b"\x41"*152+b"\x70\xe3\xff\xff\xff\x7f")') (gdb) i r ... rbp 0x4141414141414141 0x4141414141414141 rsp 0x7fffffffe3f8 0x7fffffffe3f8 rip 0x400694 0x400694 <main+171> ...
RIP未被覆盖为预期的0x7fffffffe370,而是回到了0x400694 <main+171>,更换其他地址及格式测试均出现相同问题。
补充调试信息
- 测试1中关键汇编调用为
0x0000000000400667 <+126>: callq 0x400460 strcpy@plt,main函数汇编代码里0x400694处为retq指令;在该retq处设置断点,执行next后,内存与寄存器显示RIP已被正确覆盖。 - 测试2同样在
retq处设置断点并执行next后,内存地址0x7fffffffe428处内容异常,RIP未被预期地址覆盖,而是回到了0x400694 <main+171>。
内容的提问来源于stack exchange,提问作者user27263189
相关产品推荐
相关产品推荐

