拆炸弹!bomb-whu,phase-1

匿名 (未验证) 提交于 2019-12-02 23:57:01

6个关卡,难度随关卡升级而提升;
通过解读汇编代码来推断其对应的函数结构(推断过程不唯一),某些关卡答案不唯一;
尽力而为,能通几关就几关。
提示:
第一关(知识点:string,函数调用,栈)
第二关(知识点:循环语句,数组)
第三关(知识点: switch语句)
第四关(知识点:递归)
第五关(知识点:字串变换,ascii转换,寻址)
第六关(知识点:寻址)

(第1-5关,各15分。第6关10分。实验总结15分。)

注1:
当前用户可能对bomb文件没有执行权限,建议先用ls查看文件权限,若没有执行权限,请用chmod +x bomb命令增加当前用户对bomb文件的执行权限。
注2:

   若用命令./bomb执行该文件提示no such file时,请先用 su szu 切换到szu账户,然后输入命令sudo apt-get install lib32z1,等待下载安装完毕即可。

三、实验环境:
1. 计算机(Intel CPU)
2. Linux64位操作系统(Ubuntu 17)
3. GDB调试工具

4. objdump反汇编工具

四、实验方法与步骤

1. 首先对bomb文件进行反汇编,并将结果输出到1.txt。

$ objdump -d bomb_64 > 1.txt

080488c0 <phase_1>:  80488c0:	83 ec 1c             	sub    $0x1c,%esp  80488c3:	c7 44 24 04 3c 93 04 	movl   $0x804933c,0x4(%esp)  80488ca:	08   80488cb:	8b 44 24 20          	mov    0x20(%esp),%eax  80488cf:	89 04 24             	mov    %eax,(%esp)  80488d2:	e8 93 04 00 00       	call   8048d6a <strings_not_equal>  80488d7:	85 c0                	test   %eax,%eax  80488d9:	74 05                	je     80488e0 <phase_1+0x20>  80488db:	e8 95 05 00 00       	call   8048e75 <explode_bomb>  80488e0:	83 c4 1c             	add    $0x1c,%esp  80488e3:	c3                   	ret    这个是
phase_1的汇编代码,第一个是比较字符串是否相等
<strings_not_equal>,相等则 je     80488e0 <phase_1+0x20>
不相等则 <explode_bomb>
 

 

找到地址
0x804933c得到答案。phase-1到这里,下次更新2

 
参考:https://www.cnblogs.com/Cherrison-Time/p/10085616.htmlhttps://blog.csdn.net/Xindolia_Ring/article/details/80142345
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!