我正在阅读shellcoder的手册。我正在跟踪,由于某种原因无法运行我的shellcode。我已经用编译了程序
gcc -mpreferred-stack-boundary = 2 -m32 -z execstack -fno-stack-protector -no-pie
我不明白...我可以控制EIP,我已经查看了GDB中的堆栈,我跳到了我的NOP底座,但仍然一无所获...我不明白为什么它不起作用。我已经尝试过了,甚至尝试了本书中的逐字记录代码,但都没有用。我的dmesg显示:
控制EIP:
segfault at 42424242 ip 0000000042424242 sp 00000000ffffd330错误14
尝试重定向到NOP雪橇后:
segfault at 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/