0

我正在研究缓冲区溢出问题,其中输入字符串必须(显然)用我的输入字符串中的 shellcode 的地址覆盖 RET。

我研究并发现在运行时确定像这样的缓冲区的内存地址并不容易。

我还了解了相对跳跃。是否可以通过相对跳转到 shellcode 开始的堆栈(和我的字符串)的较早部分来覆盖 RET?我不知道这是否可行。

基本上它看起来像这样:./program 90909090909090/bin/sh/00RELATIVE_JUMP_HERE

显然所有这些都是机器代码,这只是为了说明我想要完成的事情。

谢谢

4

1 回答 1

0

您在堆栈溢出中覆盖的不是 RET 指令,而是返回地址。所以你不会覆盖机器代码,而是一个指向机器代码的指针。确实有一些技术可以不断跳转到有趣的代码片段,谷歌搜索 ret-into-libc 和面向返回的编程。

类似地,一种著名的技术是“trampoline”技术,在这种技术中,您将返回地址指向一个“JMP ESP”指令,该指令会跳回溢出的缓冲区。

于 2011-11-14T19:23:11.123 回答