c - 执行不在堆栈上的 shellcode(缓冲区溢出)

标签 c gcc buffer-overflow shellcode

是否可以不在堆栈上执行您的 shellcode?还有其他方法可以执行shellcode吗?提前致谢

最佳答案

是的,这是可能的,但是这里有很多话要说。

首先,堆栈上的代码通常无法在许多使用 NX-bit 的现代设备上执行。 .

但更一般地说,如果您设法获得所需的权限,则内存的任何部分都可以可执行。这可以是堆、RAM、驱动器的任何区域。其实这并不重要。

堆栈只是最常见的默认攻击,但 shellcode 也可以利用堆溢出(请参阅 this answer 了解解释)。

一种常见的攻击结构是:

  1. 利用一些漏洞来获取堆栈、堆和其他一些内存
  2. 使用 ROP 使该部分内存可执行
  3. 有一个 shellcode,如果有内存限制,可能是 Egg-Hunter,它将找到主要有效负载,或者下载一些东西
  4. 执行主要负载

希望这能回答问题

关于c - 执行不在堆栈上的 shellcode(缓冲区溢出),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60534675/

相关文章:

c - 为什么 strcpy 不起作用?

c - GCC 是否错误地处理了指向传递给函数的 va_list 的指针?

c - 为什么使用 "register"关键字会使我的代码更快?

c++ - 使多个作业生成不兼容的 .so

c - 十六进制字符串作为 gdb 中 scanf 的输入

c - 如何禁用可能的堆栈破坏保护(未覆盖EIP,而是EBP)

c - 我如何告诉 Visual Studio/Microsoft 的 C 编译器允许在第一条语句之后声明变量?

c++ - 带有自定义消息的基于模板的编译时断言只能在某些编译器中编译

c - 使用 ifort/icc 时未定义对 'main' 的引用

c - 修改栈上的返回地址