Security 开发技术POP-RET不';行不通

Security 开发技术POP-RET不';行不通,security,exploit,shellcode,Security,Exploit,Shellcode,我有一个使用WindowsXPProfessionalSP3x86Spanish的虚拟机,我已经禁用了DEP 嗯,我在为“Easy RM to MP3 Converter”(是的,教程Corelan中的程序)执行poppopretjmpesp.pl漏洞攻击,但没有成功,所以我做了两个测试: 第一个成功地替换了跳转到外壳代码开头的“CCCC”(\x43\x43\x43\x43\x43)的JMP ESP,并在尝试执行此方向时产生错误。 第二,为JMP ESP提供一个有效的方向和一个包含许多断点的外

我有一个使用WindowsXPProfessionalSP3x86Spanish的虚拟机,我已经禁用了DEP

嗯,我在为“Easy RM to MP3 Converter”(是的,教程Corelan中的程序)执行poppopretjmpesp.pl漏洞攻击,但没有成功,所以我做了两个测试:

第一个成功地替换了跳转到外壳代码开头的“CCCC”(\x43\x43\x43\x43\x43)的JMP ESP,并在尝试执行此方向时产生错误。

第二,为JMP ESP提供一个有效的方向和一个包含许多断点的外壳代码。在这里,由于程序试图执行的方向而产生错误,JMP ESP NO只指向放置的断点。

原始堆栈是:


缓冲区将填充As


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


4字节的垃圾将替换为“XXXX”


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


4字节的垃圾,它将被4个NOP取代


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


这是外壳代码的开始,也是will的位置 在执行时指向JMP ESP



您的外壳代码是否正确

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


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

请查看我的新评论。