LAB boom实验报告

LAB boom实验报告

ID:37711607

大小:1.16 MB

页数:14页

时间:2019-05-29

LAB boom实验报告_第1页
LAB boom实验报告_第2页
LAB boom实验报告_第3页
LAB boom实验报告_第4页
LAB boom实验报告_第5页
资源描述:

《LAB boom实验报告》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、实验题目:bomblab实验目的:熟悉汇编程序及其调试方法,熟悉BGD工具实验环境:个人电脑,Linux系统(虚拟机)实验内容及操作步骤:实验内容:程序运行在linux环境中,程序运行中有6个关卡,每个phase需要用户在终端上输入特定的字符或者数字才能通关,否则会引爆炸弹。需要使用gdb工具反汇编出汇编代码,结合c语言文件找到每个关卡的入口函数。然后分析汇编代码,找到在每个phase程序段中,引导程序跳转到“explode_bomb”程序段的地方,并分析其成功跳转的条件,以此为突破口寻找应该在命令行输入何种字符通关。实验需要用到gdb工具,可到网上查找gdb使用方法

2、和参数。操作步骤:1、打开终端进入bomb文件夹开始进行实验,反汇编出代码,这里有两种方式可以反汇编,第一种用命令行objdump-dbomb>1.txt,如下图:第二种反汇编方式就是用gdb工具,首先gdbbomb进入gdb工具的调试状态然后输入命令“disas所要返回的函数名”即可得到函数的汇编代码。2、拆除炸弹Phase1:汇编代码当判断%eax的结果如果不为0的话就会调用call0x80490d1也就是说会爆炸,所以函数strings_not_equal的返回值为0由这个函数名可联想到函数的功能是比较字符串,“字符串不相同”返回值为

3、0证明字符串相同,再往上movl$0x804a15c,0x4(%esp)这里有立即数,按照刚才的分析这应该是一个字符串所以我们在gdb状态下用x/s0x804a15c查看出现字符串"WehavetostandwithourNorthKoreanallies."这就应该是我们所要输入的字符串了。我们可以先调试一下,在explode_bomb入口0x80490d1设断点,再进行run操作。Phase2:汇编代码由此可见第一、二个密码是0、1.首先看到了call0x804910b所以可以猜测这道关可能是要输入6个数字,所以先把汇编代码弄出

4、来。事实上经过过程的分析我们确实需要输入6个数字并且存储在-0x20(%ebp)到-0xc(%ebp)的位置上,由上述的代码所给出的注释可以得到第一个数为0第二个为1,然后代码进入一个循环,这个循环所表达的意思就是第3个数字等于前两个数字的和也就是1,第四个数字等于第2个和第3个数字的和,以此类推,我们得到这6个数字分别为011235.验证结果如下:Phase3:汇编代码调用sscanf函数看到0x08048eb5<+20>:movl$0x804a23e,0x4(%esp)这行代码,又是一个立即数。同样我们查看地址中的值再结合后面语句中有调用__isoc99_ssca

5、nf@plt函数,说明这是要我们输入两个整型值。注:sscanf的功能是sscanf(),从一个字符串中读进与指定格式相符的数据。它的返回值为被成功赋值的指针变量的个数,如果该函数发生错误,则返回EOF(-1)根据sscanf的返回值判断可知所输入的值得个数大于1,也就验证上面所说的输入两个整型数值,后面的语句有判断了输入的第一个数值小于7。接下来的语句0x08048edb<+58>:jmp*0x804a1a0(,%eax,4)典型的switch跳转语句,跳转到以0x804a1a0为基址的跳转表中输入p/x*0x804a1a0得到地址0x8048f12,也就是输入0的

6、时候程序会跳转到0x8048f12<+113>的地方执行。在代码中找到这个地址,从这个地址继续执行将0x314赋给%eax然后跳转到0x08048f1e<+125>以下的操作就是0x314-0x35a+0x2ef-0x216+0x216-0x216+0x216-0x216结果为147cmp-0x10(%ebp),%eax这个语句说明147就是我们所要输入的第二个参数。验证结果如下:Phase4:汇编代码根据0x08048e42<+20>:movl$0x804a23e,0x4(%esp),我们查看0x804a23e的值结果为:再根据语句0x08048e50<+34>:c

7、all0x8048840<__isoc99_sscanf@plt>0x08048e55<+39>:cmp$0x2,%eax说明我们要输入两个整型数,下面的工作就是判断这两个整型数分别是什么。由代码0x08048e6b<+61>:movl$0xe,0x8(%esp)0x08048e73<+69>:movl$0x0,0x4(%esp)0x08048e7b<+77>:mov-0xc(%ebp),%eax0x08048e7e<+80>:mov%eax,(%esp)可以看出我们以第一个参数,0,14为参数传入递归函数中而且返回值为1,所以我们这时做的事情就是分

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。