一个销售网站的设计方案白山网络推广
1. 引入
基于变异策略的模糊测试,有两个重点:
(1)seed:种子,初始的合法输入序列。
(2)mutation:对已经存在的输入序列,进行微调。
所以,mutation的策略就比较重要,常用的mutation策略如下所示。
2. mutation策略(变异策略)
-
Flip one random bit(翻转一个随机位)
- 把某一bit从0变为1,或者从1变为0
-
Alternate one or multiple consecutive bytes(交换一个或多个连续字节)
- 比如将每个字节的值与其相邻字节的值进行交换或按某种规则改变
-
Erase one or multiple bytes from random offsets(从随机偏移量处删除一个或多个字节)
- 从某个随机的位置开始,随机删除一部分字节数据
-
Insert one or multiple bytes to random offsets(在随机偏移量处插入一个或多个字节)
- 从某个随机的位置开始,随机插入一部分字节数据
-
Repeat existing bytes multiple times(重复现有字节多次)
- 选择数据中的一段字节序列,并将这段序列重复多次插入到原位置或其他位置,可能导致数据膨胀或程序逻辑错误。
-
Add a word from a predefined dictionary(添加一个来自预定义字典的单词)
- 从字典中随机选择一个单词,并将其插入到数据的某个位置
-
Shuffle consecutive bytes (reorder multiple bytes randomly)(随机重排连续字节)
- 将一段连续字节的顺序随机打乱,而不改变这些字节的值。
-
Copy a substring and paste it randomly offsets(复制一个子字符串并随机粘贴到偏移量处)
- 从数据中复制一段子字符串,并将其粘贴到数据的另一个随机位置。
-
Crossover(交叉)
- 也称为杂交或基因重组,这个操作通常涉及两个或多个数据样本,通过交换它们的一部分来生成新的数据样本。这是遗传算法的手法。
-
Apply mutation one or more times on a single seed input(对单个种子输入应用一次或多次变异)
- 选择一个初始的“种子”输入,然后对其应用上述一个或多个变异策略一次或多次,以生成多个不同的测试样本。
3. 参考
http://sigsoft.or.kr/wp-content/uploads/2021/01/20210324_005245.pdf