afl-first-try

This commit is contained in:
Cool-Y 2019-07-09 17:27:41 +08:00
parent 875b401d8b
commit 0069b314d6

View File

@ -1,5 +1,5 @@
---
title: AFL初探
title: 模糊测试与AFL
date: 2019-07-01 17:25:36
tags:
- AFL
@ -122,7 +122,9 @@ American Fuzzy Lop是一种暴力模糊测试配有极其简单但坚如磐
* 4使用平衡且经过充分研究的各种传统模糊测试策略反复改变文件
* 5如果任何生成的编译导致由instrumentation记录的新状态转换则将变异输出添加为队列中的新条目。
* 6转到2。
![](https://image.3001.net/images/20181207/1544168163_5c0a22e3eedce.jpg)
<img src="https://image.3001.net/images/20181207/1544168163_5c0a22e3eedce.jpg" width = 60% div align=center/>
发现的测试用例也会定期被淘汰以消除那些被更新更高覆盖率的发现所淘汰的测试用例。并经历其他几个插桩驱动instrumentation-driven的努力最小化步骤。
作为模糊测试过程的一个副作用,该工具创建了一个小型,独立的有趣测试用例集。这些对于播种其他劳动力或资源密集型测试方案非常有用 - 例如,用于压力测试浏览器,办公应用程序,图形套件或闭源工具。
该模糊器经过全面测试,可提供远远优于盲目模糊或仅覆盖工具的开箱即用性能。
@ -311,7 +313,7 @@ AFL的fuzzers使用一个**全局Map**来存储之前执行时看到的tuple。
## 3输入队列的进化(Evolving the input queue)
经变异的测试用例,会使程序产生 ***新的状态转移*** 。这些测试用例稍后被添加到 input 队列中,用作下一个 fuzz 循环。它们补充但不替换现有的发现。
这种算法允许工具可以持续探索不同的代码路径,即使底层的数据格式可能是完全不同的。如下图:
![](http://lcamtuf.coredump.cx/afl/afl_gzip.png)
<img src="http://lcamtuf.coredump.cx/afl/afl_gzip.png" width = 60% div align=center/>
这里有一些这种算法在实际情况下例子: