2501_91128067 2025-12-23 17:23 采纳率: 50%
浏览 11
已采纳

缓冲区溢出攻击炸弹boom关

img

img

img

缓冲区溢出攻击炸弹。在这个实验中,提供给你一个可执行文件 bufbomb 用于解析。你需要用缓冲区溢出的方式攻击,正确执行相应的函数。注意 bufbomb 有几个参数,需要执行 ./bufbomb -u <学号> 来启动程序,并且最后一关中需要额外开启 -n 选项。为了帮助完成实验,还提供了两个工具 makecookie 和 hex2raw。其中,makecookie 基于命令行参数的学号产生唯一的8个16进制数字组成的序(如0x12345678),称为cookie;hex2raw能将 ASCII 的文本字符串转变为相应的序列。提示本次攻击的对象位于 getbuf 函数,其调用的 gets 函数存在漏洞。卡在boom 关了

  • 写回答

1条回答 默认 最新

  • 关注

    Boom关的核心就是溢出覆盖返回地址,跳转到目标函数+带对cookie,步骤就3步,无脑套就行:

    1. 算缓冲区大小
      getbuf汇编里的sub $0x38, %esp,直接得出缓冲区是 0x38字节(56字节),前56字节随便填垃圾数据(比如全填0x41,也就是字符'A')。

    2. 构造攻击载荷
      载荷结构 = 56字节垃圾数据 + 4字节目标函数地址(小端序) + 8字节cookie(小端序)

      • 目标函数地址:比如要跳的函数是getbufn,它的内存地址(比如0x8049404)转小端序就是04 94 04 08
      • cookie:用./makecookie 你的学号生成,比如得到0x12345678,小端序就是78 56 34 12
    3. 用hex2raw转成raw格式喂给程序
      把上面的16进制序列写成文本文件,执行./hex2raw 你的载荷文件 > boom.raw,再跑./bufbomb -u 学号 < boom.raw

    最容易踩的坑:地址和cookie一定要转小端序!x86架构默认小端,写反了绝对失败。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 12月29日
  • 修改了问题 12月23日
  • 修改了问题 12月23日
  • 创建了问题 12月23日