模糊测试的过程简单来说就是模糊测试工具基于样本,进行变异,然后将变异后的变异样本交给被测目标程序处理,同时观测被目标是否有漏洞的

其中一个重要的过程就是模糊测试工具利用自身的变异算法针对样本进行的变异

变异的过程主要涉及到样本,变异,和变异过程使用到的数据

样本

对于黑盒模糊测试来说,主要的样本数据在模型里,当然也有很多测试套件是有样本库的,比如文件测试套件

对于灰白盒模糊测试来说,样本库除了测试人员初始设置以外,还来自测试过程中的样本进化

变异过程使用的数据

样本 (见上)

字典 (针对一些典型的被测目标,测试人员设置字典是有必要的,比如当测试目标是数据库时,像select,SQL这样的字符串被加入到字典中)

静态异常数据 (一般的模糊测试工具都会有自己的异常数据库,将常见的能够引起程序处理错误的数据存起来供变异算法使用)

被测目标获取 (对于灰白盒模糊测试,一般通过插装的方式,将被测程序动态运行中使用的一些重要的数据获取出来交给模糊测试工具用于变异)

如何变异

样本直接变异 (对样本进行直接的变异,比如bit反转,byte随机,删除某个byte,局部多次复制等)

基于数据变异 (使用上面说的数据对样本进行变异,比如整体替换,局部替换,插入等)

基于类型变异 (针对被变异数据的类型进行变异,比如整数随机等 大小写变异等)

基于模型变异 (对于黑盒模糊测试来说,因为有模型的存在,可以基于模型设计很多变异算法,比如某个结构整体删除,多字段同时变异,将某个复制到其他位置等)

模糊测试一般依赖海量的变异,理论上大多数时候变异是无穷尽的,这也决定了模糊测试是一个自动化的,耗时的测试活动

青草莓科技

打开网易新闻 查看精彩图片