对于我的硬件任务,我试图利用溢出的c文件。我无法编辑原始文件,也无法重新编译它。
我已经回到了我想要的地址。但是,在执行了一段时间的代码后,我得到了:
0xffffcc38 pop %eax
0xffffcc39 push %eax
0xffffcc3a pop %ecx
→ 0xffffcc3b xor 0x30(%ebp), %eax
0xffffcc3e xor %eax, 0x30(%ebp)
0xffffcc41 xor %esi, 0x30(%ebp)
0xffffcc44 xor 0x30(%ebp), %esi
0xffffcc47 pop %ax
0xffffcc49 push $0x68736538
0xffffcc3b in ?? ()
gef➤
Program terminated with signal SIGSEGV, Segmentation fault.
The program no longer exists.
从0xfffcc30-> 0xffffcc3a执行正常,但突然停止在0xffffcc3b。我能知道为什么会这样吗?
答案 0 :(得分:0)
我能知道为什么会这样吗?
如果此指令产生了SIGSEGV
:
0xffffcc3b xor 0x30(%ebp), %eax
这是$EBP + 0x30
指向不可访问内存的安全赌注。
您很有可能是在漏洞利用中较早地“踏入” $EBP
。