- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
深 圳 大 学 实 验 报 告 课 程 名 称: 计算机系统(2) 实验项目名称: 缓冲区溢出攻击实验 学 院: 计算机与软件学院 专 业: 指 导 教 师: 罗秋明 报告人: 学号: 班级: 实 验 时 间: 2017 年 5 月 12 日 实验报告提交时间: 2017 年 5 月 31 日 教务处制 一、 实验目标: 1. 理解程序函数调用中参数传递机制; 2. 掌握缓冲区溢出攻击方法; 3. 进一步熟练掌握 GDB 调试工具和 objdump 反汇编工具。 二、实验环境: 1. 计算机(Intel CPU ) 2. Linux32 位操作系统(Ubuntu 16.04 ) 3. GDB 调试工具 4. objdump 反汇编工具 三、实验内容 本实验设计为一个黑客利用缓冲区溢出技术进行攻击的游戏。我们仅给黑客(同学)提 供一个二进制可执行文件 bufbomb 和部分函数的 C 代码,不提供每个关卡的源代码。程序 运行中有 3 个关卡,每个关卡需要用户输入正确的缓冲区内容,否则无法通过管卡! 要求同学查看各关卡的要求,运用 GDB 调试工具和 objdump 反汇编工具,通过分析 汇编代码和相应的栈帧结构,通过缓冲区溢出办法在执行了 getbuf()函数返回时作攻击,使 之返回到各关卡要求的指定函数中。第一关只需要返回到指定函数,第二关不仅返回到指定 函数还需要为该指定函数准备好参数,最后一关要求在返回到指定函数之前执行一段汇编代 码完成全局变量的修改。 实验代码 bufbomb 和相关工具(sendstring/makecookie )的更详细内容请参考 “实验四 缓冲区溢出攻击实验.pptx”。 本实验要求解决关卡 1、2 、3,给出实验思路,通过截图把实验过程和结果写在实验报 告上。 四、实验步骤和结果 首先是 makecookie: 深圳大学学生实验报告用纸 步骤 1 返回到 smoke() 1.1 解题思路 步骤 1 是要修改 getbuf() 的返回地址,在执行完getbuf()后不是返回到原来的调用 者 test() ,而是跳到一个叫做 smoke()的函数里。 只需构造一段字符串让 Gets()全部拷贝到 buf 数组了,从而造成缓冲区溢出。同 时最重要的一点是:将 smoke()函数的初始地址也放到构造的字符串内,使其恰 好覆盖到 getbuf() 的return address 位置。 1.2 解题过程 首先要知道 smoke()的初始地址,用objdump 查看符号表 深圳大学学生实验报告用纸 smoke 的初始地址是0x08048eb0 。buf 第一个元素的地址是-0x18,而return address 第一个字节的地址是 0x04 ,两个位置的相差换算成十进制就是 0x04 - (-0x18) = 4 + 24 = 28 。也就是说我们要构造28 个字符,然后加上 smoke()的地址就能准确覆 盖到 return address 了。 1.3 最终结果截图 步骤 2 返回到 fizz()并准备相应参数 2.1 解题思路 通过 objdump -t 查看符号表中 fizz()函数的初始地址。拿到了地址 0x08048e60 , 只要用它替换掉之前exploit.raw 中smoke()的地址就能让getbuf()执行完毕后返回 到 fizz() 中。然后用makecookie 生成我的用户名 ylb 。以getbuf()调用 Gets()为例, 看一下调用者的代码和对应的栈。 2.2 解题过程 深圳大学学生实验报告用纸 先分析出从 getbuf()函数结束后,到调用 fizz()函数前栈的情况: 0x0c 即将是 fizz()栈区 0x08 即将是 fizz()栈区 0x04 getbuf() 的返回地址(即 fizz(
有哪些信誉好的足球投注网站
文档评论(0)