AFL++fuzz测试路由器固件

前言

在做fuzz的时候发现很多其实都是基于AFL工具的,以前学过一点AFL++的,但很久不用都忘记了,刚好再来测试一下路由器固件来加固一下

AFL++的使用

环境搭建我就不讲了,这篇文章做了较为详细的介绍

https://c0ke.github.io/2024/07/10/AFL++fuzz%E6%B5%8B%E8%AF%95/?highlight=afl

使用如下命令进行测试

1
afl-fuzz -M master -m none -x xml.dict -i /path/to/corpus -o output -- /path/to/xmllint --valid @@
  • -M 表示使用分布式fuzz
  • -m 表示子进程的内存限制,这里为0
  • -x 指定了模糊测试的字典
  • -i 表示测试用例的输入目录
  • -o 表示fuzz的结果输出目录

显示图如下

image-20240724145749360

下面会详细介绍一下各个部分的含义

  • process timing :

    • run time: 已经运行的时间。
    • last new find: 上一次找到新的漏洞或问题的时间。
    • last saved crash: 上一次保存崩溃日志的时间。
    • last saved hang: 上一次保存挂起状态的时间。
  • overall results:

    • cycles done: 已经完成的测试周期数量,颜色从红变蓝变绿,意味着有效测试越来越少了。
    • corpus count: 初始测试用例的数量。
    • saved crashes: 已经保存的崩溃数量。
  • cycle progress:

    • now processing: 当前测试周期进度。
    • runs timed out: 运行超时的次数。
  • map coverage:

    • map density: 代码覆盖率,即已经执行的代码路径占总代码路径的比例。
    • count coverage: 达到的代码路径数量。
  • satge progress:

    • now trying: 当前测试阶段(例如,havoc表示在关键位置插入随机变异)。
    • stage execs: 在当前阶段执行的测试次数。
    • total execs: 总测试次数。
    • exec speed: 每秒执行的测试次数,在500以下就算很慢了,应该找寻更好的测试方法