我正在阅读 shellcoder 的手册。我正在跟踪,但由于某种原因无法让我的 shellcode 运行。我已经编译了该程序 gcc -mpreferred-stack-boundary=2 -m32 -z execstack -fno-stack-protector -no-pie
我不明白...我可以控制EIP,我查看了GDB中的堆栈,我跳到我的NOP雪橇,但仍然什么也没有...我不明白为什么它不起作用。我自己尝试过,甚至尝试过书中的逐字代码,但都不起作用。我的 dmesg 显示:
控制EIP: 段错误位于 42424242 ip 0000000042424242 sp 00000000ffffd330 错误 14
尝试重定向到 NOP 雪橇后: 0 ip 00000000ffffd332 sp 00000000ffffd300 处的段错误错误 6
我正在运行kali,但我也在ubuntu上尝试过。我已经在/proc/sys/kernel 中禁用了 ASLR。我正在虚拟机上尝试此操作,因此我不确定到底发生了什么。
我将不胜感激任何帮助,因为在我弄清楚发生了什么之前我不想继续前进。
最佳答案
您的 shellcode 是针对 64 位程序上的 32 位系统(-m32 标志)编译的。因此,请尝试在编译时删除该 -m32。
关于c - 缓冲区溢出不起作用(shellcoders 手册),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43991123/