【发布时间】:2012-09-30 21:27:26
【问题描述】:
所以我们有一个实验室,我们需要对程序执行缓冲区溢出。我已经发现 GCC 具有缓冲区溢出保护,并且我发现当你编译它时,你必须使用 -fno-stack-protector 标志来禁用它。在我过去之后,我使用 gdb 反汇编了代码,发现我想将程序重定向到地址 0x4005b1。
但是当我输入用户输入时,我如何在 ASCII 中输入 b1 的十六进制值?
当程序提示用户输入时,是否有办法转义 b1 值。类似于: aaaaaaaaaaaaaaaaaaaaaaaaaaa@^E\xb1 。通常,当我刚刚编译程序时,地址会从接近 0x040000 开始,但是当我使用 -fno-stack-protector 时,它会从更晚的地址开始,这就是为什么我需要将返回地址重定向到 0x4005b1。如果没有办法进入 b1,有什么替代方法可以解决这个问题?我可以以某种方式链接程序以从特定地址开始吗?如果可以,那是如何完成的?任何其他帮助或建议将不胜感激。
【问题讨论】:
标签: escaping hex ascii buffer-overflow