【发布时间】:2011-11-14 15:51:55
【问题描述】:
我正在处理缓冲区溢出问题,其中输入字符串必须(显然)用我的输入字符串中的 shellcode 的地址覆盖 RET。
我研究过,发现像这样在运行时确定缓冲区的内存地址并不容易。
我还了解了相对跳跃。是否可以通过相对跳转到 shellcode 开始的堆栈(和我的字符串)的较早部分来覆盖 RET?不知道行不行。
基本上它看起来像这样: ./program 90909090909090/bin/sh/00RELATIVE_JUMP_HERE
显然所有这些都是机器代码,这只是为了说明我要完成的工作。
谢谢
【问题讨论】:
-
对您正在尝试的内容进行更详细描述的代码示例会有所帮助。
-
Win32 中的一种常用技术(二进制文件已经编译并且不会更改)是使返回地址指向“JMP ESP”指令,该指令会跳转到 shellcode。
-
没有太多代码可以展示。 ./program 所做的只是创建一个 33 字节的缓冲区,然后将 ARG[1] 读入其中。就是这样……
标签: assembly buffer stack-overflow shellcode