网络攻击与防范实验报告
姓名:____王小北___ 学号:___ 201411111111111111 _ 所在班级:
字符串截取工具实验名称:缓冲区溢出实验日期:2014年11月7日指导老师:实验评分:
验收评语:
实验目的:
1.掌握缓冲区溢出的原理
2.掌握常用的缓冲区溢出方法
3.理解缓冲区溢出的危害性
4.掌握防范和避免缓冲区溢出攻击的方法
实验工具:
溢出对象:war-ftp 1.65 ( 自己分析)
调试工具:Debugging Tools for Windows 中(网上有下载)
实验环境:虚拟机vmware workstation 10 Windows XP sp1
高级语言编程:Socket编程VS2010
实验步骤:
原理:war-ftp 1.65版本的一个漏洞,即向服务器发送超过480字节的用户名可以触发漏洞(即使用命令USER longString\r\n),溢出之后ESP内容包含了longString中的部分内容。
过程:攻击者向war-ftp发送多余480字节的用户名,触发war-ftpd的漏洞,产生缓冲区溢出,此时war-ftpd将出现错误。接下来通过PatterntTool工具构造的一串不重复字符串(1000个不同字符串,存入中),通过其时eip的内容,利用patternoffset.pl工具来确定RET的位置。
在网上寻一段具有攻击效果的Shellcode,作为所发送的war-ftpd用户名。其最主要是通过上边所确定的RET的位置,将“JMP ESP”指令的地址(0x7ffa4512)传递到RET 位置,最终目的是将指令指针转移到esp的位置。同时我们可以通过确定esp的位置,从而在构造字符串时直接将shellcode代码加在在用户名上,使其能直接被放入esp所指的位置,即达到将其放入esp指向的缓冲区的目的。
通过发送构造的用户名,导致war-ftpd发生缓冲区溢出。Shellcode的功能是建立一个新用户hack,可以用过net user命令来查看用户,最后发现攻击成功。
1.启动war-ftp 1.65
2.打开Debugging Tools for Windows,将war-ftp 1.65挂起
3.利用PatterntTool工具生成一个1000个不同字符的txt文档
4.将war-ftp 1.65连接到主机
5.输入用户名,密码,用户名为之前产生的1000个不同字符的txt文档,密码随便输入
6.在Debugging Tools for Windows输入g继续运行,出现eip的内容等,之后查看esp的
内容
7.根据eip,esp的内容在1000个字符中的位置去定位,发现其相对位置分别为489和493
8.在网上到一段能建立一个hack用户的shellcode代码:
9.编写Socket程序,注意代码填充的位置
连接目标主机(connect)
构造溢出字符串(使用命令USER longString\r\n,溢出之后,ESP中的内容包含了longString)
向目标主机发送溢出字符串(send)
关闭连接
10.攻击前后结果
实验结论:
通过这次实验了解了缓冲溢出的危害,war-ftp 1.65存在用户名溢出的漏洞,EIP的位置相对于缓冲区的起始位置是485,ESP的位置相对于缓冲区的起始位置是493,漏洞存在的原因是因为war-ftp并不检查发送过来的用户名的长度。解决方法是war-ftp每次对建立连接的用户检查发送过来的用户名长度,如果过长,就截取其中一段,这样就可以修补漏洞。
收获与体会:
通过这次实验又熟悉了Socket编程,并了解的一些命令(如telnet等),但也出现了几个需要注意的问题:
war-ftp软件无法打开,经过在上和同学交流,明白必须先删除文件夹内FtpDaemon.dat “user ”是5个字符,别忘了空格也算一个,结尾要加上\r\n
若利用sizeof计算字符串长度别忘了减一
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论