4.2 利用跳转指令实现缓冲区溢出
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
题目:利用跳转指令实现缓冲区溢出日期:2014年12月11日
实验目的:
1.熟练掌握缓冲区溢出原理
2.利用jmp esp指令实现缓冲区溢出
实验过程:
1.溢出程序演示
(1)进入实验平台,单击工具栏“演示目录”按钮,进入实验目录。进入Mission1目录,双击overflow_win.exe,加载ShellCode执行溢出操作。会出现堆栈成功溢出。
2.溢出实现
(1)编写前导码。
(2)查找jmp esp指令地址。
(3)shellcode功能体。
1. 编写前导码;
2.查找jmp esp指令地址;jmp esp指令地址是 0x77e424da
3.生成实现弹出对话框的指令码。
(1)在左侧Module树状视图中选中“USER32.DLL”节点;
(2)在右侧导出函数列表视图中遍历Function属性列,查找函数“MessageBoxA”(序号480);
(3)在下侧Module列表视图中遍历Module属性列,查找模块“USER32.DLL”。
MessageBoxA函数的绝对内存地址为 0X77E4D8DE ;ExitProcess 的绝对内存地址 0X7C813039
将函数MessageBoxA和ExitProcess的绝对内存地址填写到指定位置。
在理解了Createshellcode.c中的汇编部分代码后,就可以利用VC++6.0反汇编功能获取代码字节,进行调试。
将代码字节以十六进制数据形式继续追加到shellcode尾。重新编译执行。
实验总结:
答:本实验采用的方法是通过跳转指令“jmpesp”(无条件跳转至esp指向处执行)。通过在用户地址空间中查找到包含有“jmpesp”指令的存储地址,用该地址覆盖ret返回地址。使程序转而执行shellcode。