软件安全实验四——fuzz测试代码
一、 *实验目标*
- 了解漏洞挖掘的基本思想
- 掌握基本的fuzz测试的工具与技巧
- 尝试自己编写fuzz测试代码
二、 *测试步骤与结果*
- 打开虚拟机桌面上的Quick FTP的文件夹
打开exe文件,接着设置开放匿名用户
- 打开ftpfuzz的exe文件
左下角下拉框选择Deselect All
在USER选项中的Command Argument中填入anonymous
在PASS选项中的Command Argument中填入anonymous
在LIST选项中勾选fuzz this ftp command选项
不要忘了update chang
- 点击config菜单,然后选中Fuzzing data选项卡,设定要设置的脏数据,先只选择”..?”
- 配置host
启动攻击
- 启动后可以看到相关的信息(更改timeout时间)
虚拟机里面FTP主机直接崩溃
- 打开桌面上的Home Ftp Server
- 点击下方的FTP SERVER选项卡
- 点击New Member创立新成员
- 按照要求填入帐号密码文件夹地址和权限等相关参数
- 然后点击start server,左下角提示running表示
服务器已经开始运行
- 打开开始菜单中的Python程序中的GUI
选择fuzz实验文件夹中的fuzz.py文件
打开后我们可以看到我们的Python文件中的代码
读懂了之后就可以编写Fuzz工具了
- 运行fuzz,可以看到运行结果如下,发现很多次失败的情况,其实回去观察服务器情况可以发现是Fuzz已经成功导致服务已经关停。
三、 *测试结论*
在本次实验中使用了fuzz攻击工具对ftp服务器进行了有效供给,并导致了服务器的崩溃。通常使用的fuzz攻击工具是集合好的软件,但本次实验中我们也通过编写python脚本实现了攻击。在通过OllyDbg进行分析时,虽然能够转跳到攻击所在位置,但是很难获取到攻击使得服务器崩溃的原因。通过本次实验,我对软件安全和栈溢出也有了更加深刻的认识,意识到了软件安全的重要性。
四、 *思考题*
开发一个针对FTP协议的fuzzing程序,针对easy ftp server,使服务器停止工作,至少找出3个崩溃的异常(代码位置不同)。通过OD找到出现异常崩溃的代码位置及寄存器状态,并判断其是否存在缓冲区溢出漏洞,并植入shellcode。
- 下载easy ftp server*并用ollydbg运行
运行Ftpconsole.exe,点击启动按钮
*
OllyDbg点击附加
点击OllyDbg运行。
- 网上查询得知读入信息存在于WS2_32.dll中,查询输入地址74FBAA7B
- 编写fuzz脚本进行攻击,找到WS2_32,查找栈空间开辟大小
- 运行脚本进行攻击,发生报错
可以看见数据栈信息输入
- 编写shellcode注入文件,只需让返回地址为输入内容的起始地址,并从起始地址位置写入shellcode代码,其余位置补全
- 引入新的输入文件
- 重新进行fuzz攻击
数据栈被修改,并成功输出shellcode重写成果
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 ZYH's blog!
评论