版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、深圳大学实验报告课程名称:计算机系统(2)实验项目名称: 缓冲区溢出攻击实验学院:计算机与软件学院专业:计算机科学与技术指导教师:罗秋明报告人:实验时间:2016年5月8日实验报告提交时间:2016年5月22日教务处制一、实验目标:理解程序函数调用中参数传递机制;掌握缓冲区溢出攻击方法;进一步熟练掌握GDB调试工具和objdump反汇编工具。二、实验环境:计算机(Intel CPU)Linux64 位操作系统(CentOs)GDB调试工具objdump反汇编工具三、实验内容本实验设计为一个黑客利用缓冲区溢出技术进行攻击的游戏。我们仅给黑客(同学)提 供一个二进制可执行文件bufbomb和部分函
2、数的C代码,不提供每个关卡的源代码。程序 运行中有3个关卡,每个关卡需要用户输入正确的缓冲区内容,否则无法通过管卡!要求同学查看各关卡的要求,运用GDB调试工具和objdump反汇编工具,通过分析 汇编代码和相应的栈帧结构,通过缓冲区溢出办法在执行了 getbuf()函数返回时作攻击,使 之返回到各关卡要求的指定函数中。第一关只需要返回到指定函数,第二关不仅返回到指定 函数还需要为该指定函数准备好参数,最后一关要求在返回到指定函数之前执行一段汇编代 码完成全局变量的修改。实验代码bufbomb和相关工具(sendstring/makecookie)的更详细内容请参考“实验四 缓 冲区溢出攻击实
3、验.pptx”本实验要求解决关卡1、2、3,给出实验思路,通过截图把实验过程和结果写在实验报 告上。四、实验步骤和结果步骤1返回到smoke()1.1解题思路首先弄清楚getbuf ()的栈帧结构,知道存放字符数组buf地址的单元和存 放getbuf ()返回地址的单元之间相差多少个字节。假设两者之间相差x个字节。然后找到smoke()函数的入口地址。该值为4个字节。再构造exploit.txt,前x个字节随意填,然后再填入4个字节的smoke ()地 址,注意是小端方式存储。这样操作完成,就可以得到预期结果了。1.2解题过程首先进入GDB对bufbomb进行调试,先在调用getbuf ()处
4、设置断点,然 后运行。注:此时的输入文件exploit_raw.txt文件中是随便填的,并不影响我调用 smoke (),因为我会在gdb中使用set指令直接修改getbuf ()的返回地址。(gdb) |crEtbu壬 |Breakpoint 1 at 0 x8048adfi(gdb)mm 七 huMiiggaiig 此 exploit; :.七*七Staz?ting program:/home/Huaiiggaiig 2016150170/ex4/bufbomb raw.txtTeam: huaiiggangCookie: 0 x542ee3 6cBreakpoint 1f 0 x0804
5、8ad6 in getbuf ()此时查看运行程序的调用栈帧结构,如下所示:(gdb) btIfO 0 x08048a.d6 in getbuf () Ifl田 04 匠击5| in test ()岸2 0 x08049085 in launch () 养3 0 x08049257 in main ()上图说明当getbuf ()执行完后,会返回到test ()函数中(返回到地址 0 x08048db2,我们要修改存放这个值的地址单元,改为smoke的入口地址值)。分别进入getbuf和test的帧中,查看esp的值,如下所示,它们两个之间的 差值就是getbuf的帧大小,为0 x30。查看g
6、etbuf()的汇编代码,可以知道函数getbuf()的帧(大小为0 x30) 的具体分配:返回地址4个字节,将%ebp压栈占去4个字节,然后esp减去0 x28。接着看方框2中的两条指令可知,是在为调用Gets()函数构造参数,它将 ebp偏移-0 x18处的地址作为Gets的参数,用作字符数组的buf地址。push %ebplea.-0 x18 (%ebp) ,%ea_Kmow8已乳Kr (8已吕口)call 80489c0 leavemov $0 x1 f %eajc ret具体的结构如下所示:由getbuf的栈帧结构可得如下表格:输入的字符数量被破坏的状态0-11无12-23分配后但未
7、使用的空间24-27保存的%ebp旧值28-31Getbuf的返回地址32+调用者test()的状态在还没有执行Gets ()时查看getbuf ()的帧结构里面存的值,如下所示:(gdb) x/12x0 xffffbb40:0 x080484480 x000000010 x0000000010 x000000000 xffffbb50:0 x000000000 xf7el570a0 xf7e5136b0 xf7faa000OxffffbbfiO:0 x0804b018Oxffffffff0 xffffbb88IOxO8O48db2l黑色方框是gets()函数读取字符串所存放的地方,大小为12
8、个字节,蓝色 方框则是getbuf()的返回地址。使用objdump查看函数smoke()的入口地址,如下所示:由于我是随便填的exploit_raw.txt (但是肯定字符小于12个),肯定不会破坏 缓冲区,getbuf执行完了只会返回调用它的函数test中。但是我使用set指令将getbuf()的返回地址改成了 smoke()的入口地址:(gdb) set -LLtisigned int Oxfff= 0 x08048eb0(gdb) x/12x0 xffffhb40:0 x080484480 x000000010 x00000000Oxffffhb50:0 x000000000 xf7e
9、l570a0 x7e5136bOxffffhbSO:0 x0804b018Oxffffffff0 xffffhb880 x000000000 x7faa000 0 x08048eb0|然后继续执行程序,getbuf()执行完就跳到smoke()函数中了,如下图 所示:执行正确!现在已经知道了 getbuf ()具体的栈帧结构,就可以构造exploit.txt 了可以知道,至少要输入32个字符(即32个字节)才能把getbuf()的返回 地址覆盖掉。如下图所示:其中前28个字节无所谓,可以随便填,但最后4个字节一定要是smoke() 的开始地址0 x08048eb0。由于是采用小端方式存储,所以
10、改地址要写成如下形 式(低字节在前)。再将 exploit.txt 转成 exploit_raw.txt。1.3最终结果截图程序成功地跳到了 smoke()函数中:rootVM 0 5 centos ex4 # . /bufborrib exploit raw. txt -t huanggang Team: huaiiggang Cookie: 0 x542ee36aTy深圳大学学生洛验报告用纸You called smoked MICE JOB*Sent validation information to grading server步骤2返回到fizz()并准备相应参数2.1解题思路分析f
11、izz ()函数,得到它需要一个参数,为huanggang cookie值。根据步骤1分析得到的getbuf栈帧结构,可以得到fizz()地址和cookie参 数放在栈帧中的具体位置。再获取fizz()函数的入口地址和huanggang5的 cookie值,用于构造exploit.txt。 就可以运行了。2.2解题过程Fizz()函数的汇编转为C语言大致如下:int sokM /是一个根据姓名产生的值。void fizz(int cookie)if(cookie = cookie)prirrtf(Fizz!: You called f izz(0 x%x)rjookie) j validate
12、(l);elseprirrtf(Misfire: called fizz(9x%x)n f cookie); exit(8);即在调用fizz()函数之前,先要构造一个参数cookie,分析栈帧结构,如 下所示。Cookie参数存在 存放fizz()入口地址的单元 的上方。所以我们构造exploit.txt时,需要36个字节,其中前28个随便填,第29 到32个字节填fizz函数的入口地址值,第33到36字节填huanggan生成的 cookie 值。分别找出fizz()地址值和cookie值,如下所示:接着构造exploit.txt,如下所示:084843484843484848484348404348484348 484848484日如 4848 如 48 阳虽 04。琲583 曷 54 L地址 cookie再将 exploit.txt 转成 exploit_raw.txt。2.3最终结果截图成功跳转到fizz()函数中。rootfiVM 0 5 centos ex4# . /bufbomb /prLoa/sys/kernel/raindoniize va spaa3.3最终结果截图成功将global_value值设置为cookie值:五、实验总结与体会通过本次实验,加深了对函数调用时堆栈情况的了解,在步骤3中,开始怎么
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 第一章第一节区域和区域差异教案
- 《马路上的红绿灯》教案设计
- 《液压与气动》教案
- 商品房销售客户体验优化
- 交通事故调解程序
- 岱岳区园艺作业外伤防护指南
- 福建林地生态旅游开发新机遇
- 旅游景点供电合同细则
- 住宅装修项目招投标归档
- 区块链技术法律顾问服务协议
- 国开2024年秋《经济法学》计分作业1-4答案形考任务
- 生涯发展报告 (修改)
- (精选)廉政风险防控台账
- 三等金属线纹尺标准装置计量标准技术报告(钢直尺)
- 梁板模板高支撑架搭设要求
- 锡膏承认检验规格书
- 测试流程及规范
- 关于房屋建筑和市政工程界定文件
- 年产18万吨合成氨及30万吨尿素项目建议书
- 【中考英语】中考看图写话质量分析
- 关于生态美育的思考-生态美育3篇
评论
0/150
提交评论