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

缓冲区溢出攻击炸弹kaboom关

img

img

img


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

  • 写回答

1条回答 默认 最新

  • 关注

    核心就俩:算准地址、把cookie塞eax,这俩搞定就过了~

    1. 先拿cookie:用makecookie 你的学号生成(比如你的是0x493f7864),记好它的小端字节序64 78 3f 49
    2. 算缓冲区位置:getbufn里sub $0x258,%esp说明缓冲区占0x258字节,要填到0x25C字节(加4字节旧ebp)才到返回地址位;
    3. 写极简shellcode:就干俩事——把cookie塞到eax(返回值靠eax),再跳回testn里getbufn执行完的地址(0x8048ddc),机器码就这串:b8 64 78 3f 49 68 dc 8d 04 80 c3
    4. 拼攻击串:先塞shellcode(11字节),再填垃圾数据(比如0x90)到0x25C字节,最后加缓冲区真实地址(gdb里看ebp减0x258就能拿到),用hex2raw转成二进制喂给程序;
    5. 必关ASLR:sudo sysctl -w kernel.randomize_va_space=0,不然地址变了攻击就废了。
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

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