利用技术 POP RET 不起作用



我有一个装有Windows XP Professional SP3 x86西班牙语的虚拟机,并且我已经禁用了DEP。

好吧,我正在执行"Easy RM 到 MP3 转换器"(是的,教程 Corelan 的程序)的漏洞利用POPPOPRET_JMPESP.pl,但没有工作,所以我做了 2 次测试:

第一个,也是成功的,替换跳到外壳代码开头的 JMP ESP,用于"CCCC"(\x43\x43\x43\x43),并在尝试执行此方向时产生错误。源截图

第二,向JMP ESP提供有效的方向和许多断点的shellcode。这里由于程序尝试执行的方向而产生错误,JMP ESP NO仅指向放置的断点。源截图

原始堆栈为:


缓冲区将填充 As


RET 地址将被替换为 POP POP RET 的方向


4 字节的垃圾将替换为"XXXX"


这里指出 ESP 在执行 POP POP RET 指令之前,以及 它将替换为 4 个 NOP


4

字节的垃圾,它将用 4 个 NOP 来支撑


4 字节的垃圾,ESP 将指向后面,以及 将被替换为 JMP ESP,这将占用堆栈 我们放的 RET 指令


这是外壳代码的开头,是将在哪里 在执行时点 JMP ESP


你是否正确地获得了你的外壳代码?

如果是,请检查您的外壳代码是否有任何奇怪的字符。该特定程序将停止复制 NULL 字符 (0x00) 以及其他几个字符的输入。最简单的方法是找到shellcode中正确复制的最后一个字符,并排除后面的字符。您可以使用metasploit生成不包括特定字符的shellcode。

如果没有,请检查偏移量和填充。

最新更新