缓冲区溢出堆栈调整

信息安全 缓冲区溢出 外壳代码
2021-08-27 03:56:36

我对缓冲区溢出很陌生,我现在正在练习不同类型的缓冲区溢出攻击。尽管它在内存中正确设置并且执行流程根据需要工作,但在用 NOP 填充之前,shellcode 才被执行。

经过调查,我看到一些人写了以下内容:

“找到添加 esp 的操作码,-1500 将这些字节放在 shellcode 的开头删除 nops”

如果有人可以帮助解释这一点,我将不胜感激!

提前致谢

3个回答

NOP 往往会被防病毒软件标记,因此可以使用另一种方法将执行“滑动”到 shell 代码。你被告知的方式是向 ESP 添加 1500 个字节,(我假设)应该替换 1500 个 NOP,让你进入你的 shellcode。

如果你还没有看过这个,你需要阅读 corelan.be 以获得很棒的 BO 写作教程。是一个解释add esp

我找到了答案:

'StackAdjustment' => -3500, # 在 shellcode 开始时修改堆栈指针,这样它就可以使用堆栈而不用自己写。

首先,免责声明:我必须启动一个虚拟机并通过它来确认我的答案。我真的对 Windows 漏洞利用不多。快速查看那篇文章,我相信您正在调整堆栈,以免破坏当前的堆栈框架。当您用来覆盖 SEH 链的代码块返回时,函数 prolog 将从 EBP 恢复 ESP,从而恢复执行。稍后,当抛出异常时,您的 SEH 覆盖将为您提供控制权。