很多朋友看到模糊测试这个名字|模糊测试与其他测试类型有什么不一样?

很多朋友看到模糊测试这个名字 , 一开始或许都是一头雾水 , 什么是模糊测试?为什么叫这个名字呢?事实上 , 这也是我看到模糊测试这个名字的第一反应 。
模糊测试作为网络安全测试的一种方法 , 与我们常用的其他测试方法有什么不同呢?通过查阅资料和对比 , 终于解决了最初的疑惑 。 今天 , 我就跟大家分享一下 , 到底什么是模糊测试 。
很多朋友看到模糊测试这个名字|模糊测试与其他测试类型有什么不一样?

什么是模糊测试?
在了解模糊测试之前 , 先来了解一下测试是用来做什么的 。 测试在我的理解看来就是 , 一个已经开发好的系统或者一个已经可以被调用的函数又或者是一个API和其他程序接口在我们的手中 , 我们通过各种办法操作去检测这些成熟的体系中是否存在缺陷 。
了解了什么是测试 , 我们就可以很好的理解什么是模糊测试 。 模糊测试 , 就是向刚刚提到的那些成熟体系中不断输入随机产生的数据 , 然后看这些数据有没有让系统产生一些超出设定这些体系之初所预期的结果 , 这些超出预期的结果往往就是系统的缺陷 。 模糊测试到底模糊在哪里?
大家看了上面的介绍可能会觉得 , 这有什么很高端的技术吗?甚至会觉得 , 这不就是随机数自动化测试吗 , 为什么要叫做模糊测试呢?
下面给大家介绍一下模糊测试模糊在哪里 , 首先大家对模糊测试的理解是没问题的 , 确实是随机数自动化测试工具 , 但并不完全是这样 。 模糊测试里的随机是一种无法预测的 , 具有模糊未来的数据 , 并不局限于数字或者字符 , 这个模糊的未来甚至可能是一种状态 , 这种状态是无法用具体的字符描写出来的 。 模糊测试和其他测试类型有什么不一样?
模糊测试在刚刚提出的时候被列为黑盒测试类型 , 大家都普遍觉得模糊测试不涉及对具体代码的测试 , 只涉及对产品整体性能的测试和输出结果的比对 。 但是这与模糊测试的具体用途实际上是有冲突的 , 模糊测试是向一个成熟的体系输入由模糊测试工具产生的随机数据或者一个随机情况 , 然后对这个体系进行观察 。
很明显 , 如果这个代码是可以被查看到输出结果的成熟代码 , 并且需要使用者进行某种输入 , 那么这个代码也是可以被进行模糊测试的 。 所以我们的模糊测试工具就是进行了对具体代码的模糊测试 。 所以 , 现在我们可以将模糊测试分成白盒模糊测试和和黑盒模糊测试 。
那么我们了解了模糊测试与黑盒、白盒测试的关系 , 那模糊测试与两者有什么不同呢?与基于源代码的白盒测试相比 , 模糊测试的测试对象是二进制目标文件 , 因而具有更好的适用性 。 与黑盒测试相比 , 模糊测试是一种自动化的动态漏洞挖据技术 , 不存在误报 , 也不需要人工进行大量的逆向分析工作 。 模糊测试常用的开源工具简介
了解了模糊测试的原理和与其他测试的差异 , 下面来了解一下上文中多次提到的模糊测试工具 , 给大家展示出不同方向上的国外优秀模糊测试开源项目 。
很多朋友看到模糊测试这个名字|模糊测试与其他测试类型有什么不一样?

下面是我从文献1中引用的一些常用工具的介绍和概述 , 仅供大家了解 。
1、Driller
语言:Python
测试范围:Bin
推荐部署平台:Linux
相关文献:Driller:AugmentingFuzzingThroughSelectiveSymbolicExecution.NDSS`16(私信回复“Driller”获取文献)
概述:Driller方法使用fuzzing算法与symbolicexecution(符号执行)的结合方法来解决传统fuzzing算法在面对程序magicnumber(魔术数)以及checksum检查上的不足 。 当fuzzing算法在某一个程序块上卡住时(长时间无法探索到新的coverage) , Driller将使用symbolicexecution的方法来取得该检测需要的变量范围 , 从而帮助fuzzing跳过困难的判断条件语句路径 。