题目:利用跳转指令实现缓冲区溢出日期:2014年12月11日实验目的:1.熟练掌握缓冲区溢出原理2.利用jmpesp指令实现缓冲区溢出实验过程:1.溢出程序演示(1)进入实验平台,单击工具栏“演示目录”按钮,进入实验目录。进入Mission1目录,双击overflow_win.exe,加载ShellCode执行溢出操作。会出现堆栈成功溢出。2.溢出实现(1)编写前导码。(2)查找jmpesp指令地址。(3)shellcode功能体。1.编写前导码;2.查找jmpesp指令地址;jmpesp指令地址是0x77e424da3.生成实现弹出对话框的指令码。(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。