欢迎来到天天文库
浏览记录
ID:9473037
大小:251.52 KB
页数:5页
时间:2018-05-01
《网络攻防溢出漏洞实验报告》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、网络攻击与防御实验报告姓名:项中村班级:信安0803学号:U200814066指导老师:付才日期:2011.7.6一、实验目的1.掌握缓冲区溢出的原理;2.掌握缓冲区溢出漏洞的利用技巧;3.掌握CCProxy的溢出方法;4.利用溢出漏洞设计Shellcode。二、实验环境操作系统:WindowsXPSP2破解软件:OllyICEv1.10编译环境:VC++6.0三、实验过程及截图1.验证漏洞:a.打开CCProxy;b.命令行输入telnet127.0.0.1登录ccproxy;c.发送一条含超长字符串的ping命令。我使用了大量的0123456789的循环字符串,如下图发生溢出错误,证明CC
2、Proxy存在溢出漏洞2.定位溢出点:由图可知溢出点在0x35343332处,可以知道溢出位置个位为3,然后逐步缩主机名字符串的长度,最后结果是在文件名长度为1013时恰好溢出,并且EIP的地址被1013-1016位覆盖。3.漏洞分析:同学通过搜索得知在CCProxy的消息传输机制中有一个十分重要的函数:WSAsend(),在他的指点下,我通过查找WSAsend()函数得到如下图所示结果:找到WSAsend()函数对应的的指令地址,然后在相应位置设置断点,F9运行程序,发送超长ping命令给ccproxy,再进入OllyDbg进行单步调试。当程序运行到call00426B20这条指令时,发生了
3、如下图所示溢出:继续在地址0x0041735C处设断点,用OllyDbg重新加载ccproxy程序,再次运行到call00426B20时,按F7进入函数。继续单步执行,可以发现程序在执行指令call00430300时发生了溢出,具体情况如下图所示:在0x00426B40处设断点,重新跟踪到call00430300处,然后按F7进入函数,当运行到retn0c这条指令时,esp为0x014066F0,如下图:F8单步执行程序之后马上发生溢出。观察0x014066F0是在哪条指令后被覆盖,就可以分析出造成溢出的原因了。用OllyDbg重新载入ccproxy,用客户端重新发送超长的ping命令,进入c
4、all00430300单步执行,观察堆栈区:继续单步执行,发现执行完指令call00440057后,堆栈地址0x014066F0被覆盖为0x35343332,:数值0x35343332用来覆盖EIP的,由此可判断CCProxy的缓冲区溢出正是调用call00440057造成的,进一步跟踪,可发现溢出是由于call00440057的子函数call00445923的一段拷贝指令造成的。4.Shellcode:由于学期末时间紧张,直到考试前夕仍未完成这部分的实验,在此深深感到自己的能力有限。在课上已经听老师详细讲述过相关知识,自己也去网上搜索过不少信息,虽然有大致的实验思路,但是在付诸于实际的过程中
5、却困难重重,最后只能无奈放弃。我的想法是编写一段非常简单的弹窗程序:#includeintmain(){LoadLibrary("msvcrt.dll");system("command.com");return0;}然后反汇编得到二进制代码,按步骤获得所要的Shellcode,然后在栈上构造字符串以覆盖EIP,通过JMPESP跳转到该程序,但是尝试了很久都无法成功,苦于时间不足,不能深入寻找问题,无奈之下只能先放弃该部分实验。四、实验中的问题及心得这次实验的第一部分的大部分工作是在实验室进行的,除了一开始找到软件后的开始时有点无头绪,在老师和同学的帮助下大致有了实验思路
6、后就比较顺利了。因为进度慢于一同做实验的另外一位同学,所以在中途漏洞分析时直接通过他得知了导致漏洞的函数,然后所需要做的就是设置断点后一步步执行,因为已经在多次实验中使用过该软件,所以在也算是有不少经验。不过之后的Shellcode编写对我而言就非常难了,毫无经验再加上期末时间比较紧张,复习压力大,一拖再拖还是没能完成,不过在之后的时间内我会继续努力争取完成。
此文档下载收益归作者所有