我正在学习有关堆栈溢出的pwn。我使用gdb调试linux elf文件。
Elf binary仅打开NX。
我成功执行了堆栈溢出。
但是执行时
leave
ret
我遇到错误。
先到达leave
您可以看到
步骤
错误显示
Cannot access memory at address 0x8
我不访问0x8
处的内存。现在$ rbp是0x0
,当$rbp+0x8
执行时,ubuntu检查ret
吗?为什么会这样?
我的环境
uname -a
Linux ubuntu 4.4.0-142-generic #168~14.04.1-Ubuntu SMP Sat Jan 19 11:26:28 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
这可能是因为当缓冲区溢出时,指令指针指向0x8
。因此,程序尝试到达该位置,但是分配给二进制文件的内存中没有该位置。如果您告诉缓冲区大小是多少以及您给的垃圾量是多少,那就更好了。
谢谢