CSAPP Bomb Lab 实验记录 [yy-b]

前言

写这个的目的就是想记录一下自己做过的东西,内容可能比较简单,不喜请略过.
写的比较详细,按步骤大概率可重复进行实验.
本次的内容是CSAPP上的实验Bomb Lab.
部分参考了CSDN上的其他一些文章,感谢大佬们

实验环境

  1. MobaXterm
  2. Linux系统
  3. Objdump命令反汇编
  4. GDB调试工具

实验内容

准备阶段

(实验所需材料略)

  1. 登录服务器,解压炸弹压缩包
  2. 进入bomb22目录,反汇编bomb程序,储存为bomb.s
  3. 使用vi查看bomb.s
  4. 再开一个终端,使用gdb调试bomb程序
  5. Ctrl+c暂停调试
    (此处图片[数据删除])

phase_1

  1. vi中使用/main找到主函数
    在这里插入图片描述
    观察到各步骤函数为phase_1,phase_2等等,找到phase_1
    在这里插入图片描述
  2. 逐行翻译phase_1,先开辟栈帧,然后保存了一个地址调用了一个函数(从名字可以猜出是比对字符串的函数),之后返回值不相等就调用另一个函数(从名字可以猜出是爆炸的函数),然后还原栈帧结束,因此先在爆炸函数处设断点防止爆炸:
    在这里插入图片描述
  3. 再找到strings_not_equal函数:
    在这里插入图片描述
    简单看一下就是逐个比字符,猜测phase_1中保存的地址就是要比较的字符串(根据网上查到的攻略的指示,eax返回的是输入的,直接入栈的是比对的,这样推理也可以)
    则用r运行程序,查看此地址,输出为字符串格式:
    在这里插入图片描述
  4. 尝试将此字符串输入,通过了第一关
    5.

phase_2

  1. vi 中 /phase_2 定位到phase_2
    在这里插入图片描述
    头开始看,压入两个值(?)后开辟栈帧(这块不是太清楚,不过关系不大),然后调用了read_six_numbers函数,从名字猜出是要读六个数字(注意有四个寄存器是默认作为函数的参数的,这里用到了%rsi)
  2. 先来看这个函数:定位到read_six_numbers函数
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值