c - 缓冲区溢出不起作用(shellcoders 手册)

标签 c buffer-overflow exploit

我正在阅读 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/

相关文章:

c - 如何在 C 中打印 "unsigned long"?

c - 保护程序免受缓冲区溢出的影响?

c - 使用局部变量查找函数的返回地址

c - 为什么这个 shellcode 程序会发出段错误警告?

c - 缓冲区溢出漏洞 : segfault on function ret to stack code

在 C 程序中检查文件属性

c - 基于汇编32位(x86)编写C代码

c - 以下 C 代码输出错误

c++ - 为什么此代码在 Visual Studio 2012 的代码分析中发出缓冲区溢出警告 (C6385/C6386)?

mysql - 网站被利用,疑似SQL注入(inject)+PHP检查绕过,但无法解释后者是如何进行的