缓冲区溢出跳转到代码的一部分

时间:2011-09-27 01:05:52

标签: overflow buffer

我的老师给了我一些代码,我必须运行它并使用缓冲区溢出跳转到管理部分。我无法修改源代码。有人可以解释我如何使用缓冲区溢出跳转到管理方法?我在ubuntu 8.10上运行它,并使用旧版本的gcc编译,因此溢出将起作用。

2 个答案:

答案 0 :(得分:0)

无法看到代码,在一般情况下,您需要设计函数的输入,该函数将覆盖堆栈上的返回地址(或函数将传输控件的另一个地址)。

猜测时,代码具有固定长度的字符缓冲区,并将函数参数中的值复制到该缓冲区中,而不验证长度是否超过缓冲区的长度。

你需要记下你的应用程序的堆栈布局是什么样的(在调试器下运行它可能是最快的方法)来找出你需要覆盖的地址,然后放在一起用您需要调用的admin函数的地址覆盖它的字符串。

答案 1 :(得分:0)

你总是可以得到它的asm输出(我忘了现在怎么样... brainfart)并查看你想要溢出的缓冲区在哪里被使用/读取并检查它的长度。接下来,您需要计算需要多长时间才能溢出它,以便用JMP(管理代码的地址)替换下一条指令或将JMP地址更改为管理部分的地址。如果需要,0xE8是x86的跳转操作码,因为你想用你自己的指令覆盖指令的二进制数据。