我有一个使用Windows专业版SP3 x86西班牙语的虚拟机,并且禁用了DEP。
好吧,为了"Easy到MP3转换器“(是的,教程Corelan的程序),我执行了开发MP3,但是没有工作,所以我做了两个测试:
第一个也是成功的,将跳转到外壳代码开头的JMP ESP替换为"CCCC“(\X43\X43),并生成试图执行此方向的错误。来源 屏幕截图
第二,向JMP ESP提供一个有效的方向和许多断点的外壳代码。这里会产生一个错误,原因是程序试图执行的方向,而JMP ESP没有指向所放置的断点。来源 屏幕截图
最初的堆栈是:
缓冲区将填充As。
RET地址将被POP POP RET的方向所替代。
4字节的垃圾将取代"XXXX“。
这里指出ESP在执行POP POP RET指令之前,它将被4个NOPs替换
4字节的垃圾,它将取代4 NOPs
4字节的垃圾,ESP将指向后面,并将被替换为JMP ESP,这将从堆栈中获取我们所放的RET指令。
下面是外壳代码的开头,是执行JMP ESP的位置
发布于 2014-04-02 19:41:53
你的外壳代码正确吗?
如果是的话,检查你的外壳代码是否有任何奇怪的字符。该特定程序将停止复制空字符(0x00)以及其他几个输入。最简单的方法是找到正确复制的外壳代码中的最后一个字符,并排除后面那个字符。可以使用metasploit生成除特定字符之外的外壳代码。
如果没有,请检查您的偏移量和衬垫。
https://stackoverflow.com/questions/22813976
复制相似问题