练习二缓冲区溢出

练习二缓冲区溢出

ID:25017422

大小:794.50 KB

页数:21页

时间:2018-11-17

练习二缓冲区溢出_第1页
练习二缓冲区溢出_第2页
练习二缓冲区溢出_第3页
练习二缓冲区溢出_第4页
练习二缓冲区溢出_第5页
资源描述:

《练习二缓冲区溢出》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、WORD格式可编辑2012-2013学年第2学期《网络安全课程设计》实验报告实验名称:缓冲区溢出——本地缓冲区溢出完成时间:2014.6.18姓名:柳鑫学号: 110342118  指导教师:崔鸿班级: 110342A   实验效果实验报告总评专业技术资料整理WORD格式可编辑任务一利用跳转指令实现缓冲区溢出本练习单人为一组。首先使用“快照X”恢复Windows系统环境。一.溢出程序演示(1)进入实验平台,单击工具栏“演示目录”按钮,进入实验目录。进入Mission1目录,双击overflow_win.exe,加载Shel

2、lCode执行溢出操作。二.溢出实现本练习操作通过缓冲区溢出来实现弹出消息框(MessageBox对话框)。针对windows平台实现缓冲区溢出,该实验实现溢出的方式及流程具有着一定的通用性。我们需要开发实现两部分内容:一部分是漏洞程序overflow,该程序通过memcpy函数实现缓冲区溢出(添加shellcode的代码到缓冲区中,使缓冲区溢出),当然你也可以通过其它函数实现溢出。另一部分内容则是生成shellcode,shellcode是程序溢出后欲执行的指令代码,如通过shellcode实现程序溢出后弹出对话框等功能

3、。专业技术资料整理WORD格式可编辑对照图22-2-1,在程序正常执行时,memcpy函数被执行完毕后,指令指针会返回至ret地址处,继续执行memcpy函数调用处的后续指令;同时,执行完ret指令后ESP指针也会指向堆栈原始区(调用memcpy函数前一时刻的堆栈分布)。因此,我们可以将溢出代码shellcode存在堆栈原始区,而剩下的工作就是在memcpy执行ret返回时让EIP指针指向原始区(也就是ESP指针指向的地址)即可。如何通过ret返回地址确定此时的堆栈ESP指针指向呢?在这里采用的方法是通过跳转指令“jmpe

4、sp”(无条件跳转至esp指向处执行)。通过在用户地址空间中查找到包含有“jmpesp”指令的存储地址,用该地址覆盖ret返回地址就可以了。在具体实现时,我们通过三个步骤完成缓冲区溢出:(1)编写前导码。所谓前导码就是用于覆盖局部变量到ret返回地址之间的堆栈空间(不包括ret返回地址空间)的指令码。前导码仅是用于填充堆栈,所以其内容不受限制。我们需要在实际的调试中来确定前导码的大小。「说明」cl、gcc等诸多C编译器在为局部变量申请内存空间时,经常要多出若干字节。(2)查找jmpesp指令地址。用”jmpesp”指令的地

5、址覆盖ret,就可以在memcpy执行返回后,让CPU执行跳转指令,所以首要解决的是在用户空间中找到含有“jmpesp”指令的地址。通过VC++6.0的反汇编功能得到“jmpesp”指令的机器码为0xFFE4。利用FindJmpesp工具进行指令查找,确定一个含有“jmpesp”指令的内存地址。「注」在用户地址空间中会存在多个包含有jmpesp指令的地址。(3)shellcode功能体。shellcode功能体实现了溢出后主要的执行功能,如创建超级用户,提升用户权限等。在这里我们通过自定义指令来实现弹出用户对话框。1.编写

6、前导码单击工具栏“VC6”按钮,启动VC++6.0。选择“File”

7、“OpenWorkspace…”加载工程文件“C:ExpNISNetAD-LabProjectsOverFlowMission1overflow.dsw”,该工程包含两个项目,overflow和CreateShellcode项目,建议在debug版下进行开发调试。专业技术资料整理WORD格式可编辑将overflow项目设置为启动项目(SetasActiveProject),该项目仅有一个源文件overflow.c,在此源文件中提供了部分代码,

8、注释的地方需要你根据实际调试结果来填写。程序中提供了一个超长前导码,你需要对程序进行调试来确定实际需要的前导码长度。调试过程如图22-2-2所示。实验结果及截图:设置断点:遇到ret返回指令:专业技术资料整理WORD格式可编辑执行ret指令之后跳转到49484746地址处:0x46,0x47,0x48,0x49被替换,需要替换成JMPESP指令地址:在图22-2-2中可以看出,0x49484746四字节覆盖了ret返回地址,请根据调试结果重新确定shellcode指令集长度,确定ret返回地址能够被前导码的后续4字节覆盖。

9、2.查找jmpesp指令地址我们需要在用户地址空间中找到包含有jmpesp指令(机器码为0xFFE4)的地址。运行FindJmpesp工具,选取一个地址追加到shellcode尾(追加填加地址时注意数组高字节对应地址高位),所选jmpesp指令地址是0x77e424da。专业技术资料整理WORD格式可编

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

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

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