一、 *实验目标*

  1. 了解漏洞挖掘的基本思想
  2. 掌握基本的fuzz测试的工具与技巧
  3. 尝试自己编写fuzz测试代码

二、 *测试步骤与结果*

  1. 打开虚拟机桌面上的Quick FTP的文件夹

打开exe文件,接着设置开放匿名用户
imgimgimg

  1. 打开ftpfuzz的exe文件

左下角下拉框选择Deselect All
在USER选项中的Command Argument中填入anonymous
在PASS选项中的Command Argument中填入anonymous
在LIST选项中勾选fuzz this ftp command选项
img
不要忘了update chang

  1. 点击config菜单,然后选中Fuzzing data选项卡,设定要设置的脏数据,先只选择”..?”

img

  1. 配置host

img
启动攻击

  1. 启动后可以看到相关的信息(更改timeout时间)

img
虚拟机里面FTP主机直接崩溃
imgimg

  1. 打开桌面上的Home Ftp Server

img

  1. 点击下方的FTP SERVER选项卡

img

  1. 点击New Member创立新成员

img

  1. 按照要求填入帐号密码文件夹地址和权限等相关参数

img

  1. 然后点击start server,左下角提示running表示

服务器已经开始运行
img

  1. 打开开始菜单中的Python程序中的GUI

选择fuzz实验文件夹中的fuzz.py文件
打开后我们可以看到我们的Python文件中的代码
读懂了之后就可以编写Fuzz工具了
img

  1. 运行fuzz,可以看到运行结果如下,发现很多次失败的情况,其实回去观察服务器情况可以发现是Fuzz已经成功导致服务已经关停。

img
img

三、 *测试结论*

在本次实验中使用了fuzz攻击工具对ftp服务器进行了有效供给,并导致了服务器的崩溃。通常使用的fuzz攻击工具是集合好的软件,但本次实验中我们也通过编写python脚本实现了攻击。在通过OllyDbg进行分析时,虽然能够转跳到攻击所在位置,但是很难获取到攻击使得服务器崩溃的原因。通过本次实验,我对软件安全和栈溢出也有了更加深刻的认识,意识到了软件安全的重要性。

四、 *思考题*

开发一个针对FTP协议的fuzzing程序,针对easy ftp server,使服务器停止工作,至少找出3个崩溃的异常(代码位置不同)。通过OD找到出现异常崩溃的代码位置及寄存器状态,并判断其是否存在缓冲区溢出漏洞,并植入shellcode。

  1. 下载easy ftp server*并用ollydbg运行

运行Ftpconsole.exe,点击启动按钮
*img
OllyDbg点击附加
img
img
点击OllyDbg运行。

  1. 网上查询得知读入信息存在于WS2_32.dll中,查询输入地址74FBAA7B

imgimg

  1. 编写fuzz脚本进行攻击,找到WS2_32,查找栈空间开辟大小

img

  1. 运行脚本进行攻击,发生报错

img
可以看见数据栈信息输入
img

  1. 编写shellcode注入文件,只需让返回地址为输入内容的起始地址,并从起始地址位置写入shellcode代码,其余位置补全

img

  1. 引入新的输入文件

img

  1. 重新进行fuzz攻击

数据栈被修改,并成功输出shellcode重写成果
img