什么是fuzz测试?
fuzz测试主要是通过自动或者半自动方式发送大量随机或畸形的数据输入给应用,从而跟进错误和异常来寻找应用的薄弱点,来自于找到漏洞,而在当前的大网络时代应用层出不穷,敏捷开发导致应用迭代不断,虽然我们大部分在应用上线钱都会做测试但实际情况往往是不够的。
既然说到测试那么大家一定知道三大测试方式
白盒(晶盒)测试
灰盒测试
黑盒测试
三者的区别我就不说了不懂得自行百度
fuzz测试可基于这三者去做都没问题需要我们提前去做好准备以及测试域
fuzz测试得核心是在于未知和随机,简单来说当我这个数据包发送出去后我也不知道是什么效果,他说未知得,并且我发送得这个测试用例是我临时生成得我也不知道是什么含义
不过我这里说得fuzz测试为黑盒的fuzz可能会有部分灰盒的概念,与白盒无关
那么fuzz测试在黑盒中又分为两种一种是主动fuzz另一种是被动fuzz
主动fuzz是在请求包中对数据进行突变测试的计算机中的客体,被动fuzz是在响应包中进行变异测试的计算机中的主体
fuzz测试本身的局限性和他能测试出的漏洞
fuzz测试本质上无法对程序逻辑设计及后门等进行测试和检测,他跟多发现为溢出,数据穿透,处理异常等
fuzz测试一般会经历几个阶段
确定目标----》找到输入--》生产测试用例----》发送测试用例----》监视程序异常-----》确定可利用性
基本上这几个流程是不会发生大变化,唯一不一样的是这介绍的是预设值的方式而不是变异的方式,目前我们实现了部分协议的变异感兴趣的可以留意一起交流
而fuzz测试的目标一般包括:协议、环境变量、web应用程序、系统服务器、文件格式、内存,二进制,图片等
其实在这里比如以协议为例测试并不是协议本身存在什么漏洞,协议不过是双方的约定黑盒中更多的是以协议为桥或转发器来测试被测试对象对当前协议的理解是否存在偏差,这里有点像是协议健壮性测试单本质上不是
现在如今需要做fuzz测试很简单可能几行代码即可,也可能像google一样做一个框架进行测试
当前内容仅供参考有错误的希望大佬指出下次有空给大家分析如何开始进行fuzz测试以及fuzz自动化
TCV:0.1
=============================================
==================New Edition:===================
=============================================
我并不觉得我发的有什么问题本来就是准备连续发的上班无聊中写的,我自己本身就是从事fuzz工作的,我觉得我写的没有什么问题,既然大家那么难伺候,那就此再见请大家踩死我谢谢
还有xxeyf我并不觉得你牛逼
TCV