网络攻击与防范实验报告-缓冲区溢出

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

网络攻击与防范实验报告
姓名:____王小北___ 学号:___ 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个不同字符串,存入test.txt中),通过其时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计算字符串长度别忘了减一。

相关文档
最新文档