【问题标题】:Escaping characters in linux for a buffer overflow在 linux 中转义字符以导致缓冲区溢出
【发布时间】: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


    【解决方案1】:

    如果你以一堆 nop 开始你的程序,那么你在地址的底部字节上有一些灵活性。

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

    【讨论】:

      猜你喜欢
      • 2021-06-15
      • 1970-01-01
      • 2013-02-17
      • 1970-01-01
      • 2013-04-12
      • 1970-01-01
      • 2022-11-30
      • 1970-01-01
      相关资源
      最近更新 更多