详细介绍了fuzzing 工具spike自动化挖掘漏洞的过程
这个脚本指定一个如下脚本,SPIKE fuzz字符串将被插入到[fuzz_string]代表的位置上,向[size_of_data]代表的数据段大小插入POST请求数据,里面包含固定字符串“inputvar=”和可变的fuzz字符串。测试中,fuzz 字符串的长度江随着字段大小自动更新变化。
POST /testme.php HTTP/1.1
Host:
Content-Length: [size_of_data]
Connection: close
inputvar=[fuzz_string]
理解模糊测试协议
成功的fuzzing测试经常是需要将一些恶意的/意想不到的数据插入到一个具体应用输入接口中。程序在处理用户输入数据时 ,触发一个可利用的崩溃。这就需要我们在向网络协议输入fuzz数据时找到正确输入位置。数据字段/字段大小/命令行参数/输入的字符串,有时命令本身的类型就是可input输入位置,它们可以生成自身类型的错误。
换句话说,为了将错误的数据放入到正确的地方,我们需要理解与目标通讯的网络协议的结构,以便我们的fuzzing数据能被导入到应用程序的正确位置。
理解网络协议有很多方法可用,如通过查阅RFC文档,用Wireshark或tcpdump等抓取应用客户端的数据。或者,对于非常简单的协议,可以直接与应用程序交互查看它是怎么工作的。
这就是我们针对Vulnserver服务器要做的工作。首先我们需要启动它。因为我们想捕获到异常数据,所以我们在Debugger调试器中运行程序。在windows系统下启动OllyDbg,用它从本地磁盘加载vulnserver.exe文件,按F9键或按OllyDbg工具栏Play按钮或者在Debug菜单下选Run来让加载到debugger的程序运行起来。此时,程序正常运行起来。这时,如果我们引发了一个崩溃,debugger调试器将接管进程,让我们看明白在产生崩溃的时刻寄存器与程序内存正在干些什么。