网络安全实验报告 - 缓冲区溢出攻击

网络安全实验报告 - 缓冲区溢出攻击

ID:46592949

大小:414.50 KB

页数:9页

时间:2019-11-26

网络安全实验报告 - 缓冲区溢出攻击_第1页
网络安全实验报告 - 缓冲区溢出攻击_第2页
网络安全实验报告 - 缓冲区溢出攻击_第3页
网络安全实验报告 - 缓冲区溢出攻击_第4页
网络安全实验报告 - 缓冲区溢出攻击_第5页
资源描述:

《网络安全实验报告 - 缓冲区溢出攻击》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、一实验名称利用跳转指令实现缓冲区溢出定位参数地址实现缓冲区溢出二实验目的1.熟练掌握缓冲区溢出原理2.利用jmpesp指令实现缓冲区溢出3.熟练掌握缓冲区溢出原理4.利用定位参数地址实现缓冲区溢出三实验步骤l利用跳转指令实现缓冲区溢出1.编写前导码程序中提供了一个超长前导码,对程序进行调试来确定实际需要的前导码长度在图中可以看出,0x49484746四字节覆盖了ret返回地址2.查找jmpesp指令地址运行FindJmpesp工具,选取一个地址追加到shellcode尾(追加填加地址时注意数组高字节对应地址高位),所选jmpesp指令地址是0

2、x77e424da跟踪调试程序,确定在memcpy执行返回时jmpesp指令是否被执行从图看出,在jmpesp指令执行完毕后,指令指针紧接着执行了3个空指令,而空指令是追加在shellcode尾部的3.生成实现弹出对话框的指令码MessageBoxA函数的绝对内存地址,该地址为0x77E10000+0x0003D8DE=0x77E4D8DE函数ExitProcess的绝对内存地址0x7C800000+0x00013039=0x7C813039利用反汇编功能获取代码字节,将代码字节以十六进制数据形式继续追加到shellcode尾。重新编译执行。

3、l定位参数实现缓冲区溢出1.进入工程2.生成shellcode功能体(1)首先设置OverFlowClient项目为启动项。(2)使用Depends工具打开FindShellBase.exe文件定位上述内存地址kernel32.dll0x7C800000LoadlibraryA0x7C800000+0x00001E60=7C801E60SHELL32.DLL0x7CA10000shellExecuteA0x7CA10000+0x0008F6D4=0x7CA9F6D4(3)编译并生成OverFlowClient.exe,执行OverFlowCl

4、ient.exe,确定系统是否新建了jlcss用户,并隶属Administrators组。3.生成shellcode指令码(1)设置CreateShellCode为启动项。(2)填写的宏数值:①获取SHELLCODE_BODY_START、SHELLCODE_BODY_LEN值调试OverFlowClient.exe(将该项目设置为启动项)确定ShellCode函数入口偏移地址及函数体大小,调试过程参见图22-2-6所示。开始地址0x00401020结束地址0x004011B6②根据调试结果填写CreateShellCode.cpp源文件中S

5、HELLCODE_BODY_START宏和SHELLCODE_BODY_LEN宏的值。③其它数值需要通过调试OverFlowServer来获取,而OverFlowServer的执行又依赖于shellcode.shc文件,所以暂且编译生成CreateShellCode.exe文件,执行该文件生成临时shellcode.shc文件。4.调用OverFlowServer(1)OverFlow正常调用返回时的下一条指令地址。调整TempBuffer缓冲区大小,使其大于临时shellcode指令码长度。调试获取OverFlow函数正常调用执行后的下一条

6、指令地址。填写该指针地址到CreateShellCode.cpp文件中。(2)OverFlow函数调用前ebp基地址指针。单步调试程序定位到OverFlow函数入口处,获取此时的EBP指针地址填写EBP指针地址到CreateShellCode.cpp文件中。(3)调用OverFlowServer.exe确定OverFlow调用执行过程中TempBuffer缓冲区的首地址。将TempBuffer缓冲区首地址填写到CreateShellCode.cpp文件中。运行Createshellcode.exe生成完整的shellcode.sh文件5.调试

7、确定TempBuffer缓冲区大小调试OverFlowServer.exe得到OverFlow调用返回时的地址,将返回地址与shellcode.shc中的十六数相比较,有三种比较结果:(1)返回地址是shellcode最后4字节数据。函数返回时执行shellcode。(2)返回地址没有在shellcode.sh中,缓冲区空间过大,溢出未发生。可以缩小缓冲区空间或在最后8个字节前用0x90(空指令)补充。(3)返回地址在shellcode.shc中(不是最后4字节数据),缓冲区空间过小。放大缓冲区空间。当改变TempBuffer缓冲区大小时,其

8、首地址可能会发生变动,调试确定TempBuffer首地址,重新填写CreateShellCode.cpp,并重新生成shellcode.shc。调试可知:overf

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

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

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