以下是一些文章,在POPB的SEH异常回到堆栈的可控部分之后,通过使用ESP来利用不同的程序。另一篇文章演示了堆栈旋转,在加载的模块中找到合适的代码,以将堆栈转移到所需的位置。这些漏洞依赖于SEH异常之后的ESP位置,每次在具有相同OS的每台计算机上都是相同的,以便产生可靠的漏洞利用。否则38个POPAD或特定的ROP可能不会进入缓冲区。
我的问题:3个Windows 10 64位英文全面更新的VM,没有DEP。所有3上都安装了相同版本的测试程序。该程序没有Rebase,没有SafeSEH,没有ASLR,没有NX兼容。在SEH异常之后,在所有3个操作系统上,从ESP到堆栈上可控缓冲区的起点的距离是不同的。为什么我无法使用我的VM重现这些漏洞利用的结果?
PUSHAD:
www.mattandreko.com/2013/04/06/buffer-overflow-in-hexchat-294 /
ROP Stack Pivot:
thesprawl.org/research/corelan-tutorial-10-exercise-solution/#pivoting-to-the-stack