在linux中转义字符以获得缓冲区溢出

时间:2012-09-30 21:27:26

标签: escaping hex ascii buffer-overflow

所以我们有一个实验室,我们需要在程序上执行缓冲区溢出。我已经发现GCC有缓冲区溢出保护,我发现在编译它时,你必须使用-fno-stack-protector标志禁用它。在我过去之后,我使用gdb反汇编代码,发现我想将程序重定向到地址0x4005b1。

但是当我输入用户输入时,如何在ASCII中输入b1的十六进制值?

当程序提示用户输入时,有一种方法可以转义b1值。类似的东西: aaaaaaaaaaaaaaaaaaaaaaaaaaa @ ^ E \ xb1。通常,当我刚编译程序时,地址将开始接近0x040000,但是当我使用-fno-stack-protector时会在更晚的地址启动,这就是为什么我需要将返回地址重定向到0x4005b1。如果没有办法输入b1,有什么方法可以解决这个问题?我可以以某种方式将程序链接到特定地址开始,如果是这样,那怎么办?任何其他帮助或建议将不胜感激。

1 个答案:

答案 0 :(得分:0)

如果你用一堆nops启动你的程序,那么你在地址的底部字节上有一些灵活性。

输入特殊字符取决于您使用的阅读器和行缓冲区代码。例如,GNU readline使用Compose键输入特殊字符。