C语言 漏洞利用:SIGSEGV,分段错误



对于我的硬件作业,我试图利用溢出的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处。我能知道为什么会这样吗?

我能知道为什么会这样吗?

如果此指令产生了SIGSEGV

0xffffcc3b                  xor    0x30(%ebp), %eax

那么可以肯定的是,$EBP + 0x30指向无法访问的内存。

很可能您在漏洞利用的早期"踩"$EBP

相关内容

  • 没有找到相关文章

最新更新