aflplusplus:开源的模糊测试工具!全参数详细教程!Kali Linux教程!(四)
使用
afl-lto
clang LLVM 编译器
1. -help
显示可用选项
afl-lto --help
其他选项同上,这里不再展开叙述。
afl-lto++
1. -help
显示可用选项
afl-lto++ --help
其他选项同上,这里不再展开叙述。
afl-network-client
1. 帮助文档
afl-network-client
2. 常规使用
afl-network-client 127.0.0.1 8888 4096
afl-network-server
1. 帮助文档
afl-network-server
所需参数
2. -i port
客户端连接的监听端口
afl-network-server -i 8000 -- ./target
执行控制设置
3. -f file
被测程序读取的输入文件(stdin)
afl-network-server -i 8000 -f input/sample.txt -- ./target
4. -t msec
每次运行的超时时间(1000 毫秒)
afl-network-server -i 8000 -t 1000 -- ./target
5. -m megs
子进程的内存限制(0 MB)
afl-network-server -i 8000 -m 50 -- ./target
6. -Q
使用仅二进制的插桩(QEMU 模式)
afl-network-server -i 8000 -Q -- ./target
7. -U
使用基于 Unicorn 的插桩(Unicorn 模式)
afl-network-server -i 8000 -U -- ./target
8. -W
使用基于 qemu 的 Wine 插桩(Wine 模式)
afl-network-server -i 8000 -W -- ./target
afl-persistent-config
注意:需要使用 root 权限去运行。
sudo afl-persistent-config
afl-plot
1. 帮助文档
afl-plot
2. afl_state_dir
应指向任何 afl-fuzz 活动或停止实例的现有状态目录
3. graph_output_dir
应指向一个空目录,此工具可将生成的图表写入该目录
4. -g, --graphical
(可选)在图形窗口中显示图表(您需要已构建 afl-plot-ui 才能使用此选项)
afl-plot -g findings/default output-graphs
afl-showmap
1. 帮助文档
afl-showmap
必需参数
2. -o file
写入跟踪数据的文件
afl-showmap -o output/map.txt -- ./target input/sample.txt
执行控制设置
3. -t msec
每次运行的超时时间(默认值:1000ms)
afl-showmap -o output/map.txt -t 1000 -- ./target input/sample.txt
4. -m megs
子进程的内存限制(默认值:无)
afl-showmap -o output/map.txt -m 20 -- ./target input/sample.txt
5. -O
使用纯二进制插桩(FRIDA 模式)
afl-showmap -o output/map.txt -O -- ./target input/sample.txt
6. -Q
使用纯二进制插桩(QEMU 模式)
afl-showmap -o output/map.txt -Q -- ./target input/sample.txt
7. -U
使用基于 Unicorn 的插桩(Unicorn 模式)
afl-showmap -o output/map.txt -U -- ./target input/sample.txt
8. -W
使用基于 qemu 的 Wine 插桩(Wine 模式)(非必需,此处为了与其他 afl-* 工具保持一致)
afl-showmap -o output/map.txt -W -- ./target input/sample.txt
9. -X
使用 Nyx 模式
afl-showmap -o output/map.txt -X -- ./target input/sample.txt
其他设置
10. -i dir
处理此目录下的所有文件,必须与 -o 选项结合使用。使用 -C 时,-o 表示文件;不使用 -C 时,-o 表示目录。每个位图将单独写入文件。
afl-showmap -o output/map.txt -i input -- ./target input/sample.txt
11. -I filelist
与 -i 选项类似,-I 表示文件列表。
afl-showmap -o output/map.txt -I files.txt -- ./target input/sample.txt
12. -C
收集覆盖率,将所有边写入 -o 并给出摘要。必须与 -i 选项结合使用。
afl-showmap -o output/map.txt -i input -C -- ./target input/sample.txt
13. -q
接收程序的输出,不显示消息。
afl-showmap -o output/map.txt -q -- ./target input/sample.txt
14. -e
仅显示边覆盖率,忽略命中计数。
afl-showmap -o output/map.txt -e -- ./target input/sample.txt
15. -r
显示实际元组值,而不是 AFL 过滤器值。
afl-showmap -o output/map.txt -r -- ./target input/sample.txt
16. -s
不对映射进行分类。
afl-showmap -o output/map.txt -s -- ./target input/sample.txt
17. -c
允许核心转储。
afl-showmap -o output/map.txt -c -- ./target input/sample.txt
afl-system-config
afl-system-config 将系统重新配置为高性能模糊测试状态。警告:这会降低系统的安全性!请注意,还有一个 afl-persistent-config,用于设置额外的永久配置选项。
注意:需要使用 root 权限去运行。
sudo afl-system-config
afl-tmin
1. 帮助文档
afl-tmin
必需参数
2. -i file
工具需要压缩的输入测试用例
3. -o file
最小化数据的最终输出位置
afl-tmin -i input/sample.txt -o output/map.txt -- ./target
执行控制设置
4. -f file
测试程序读取的输入文件(标准输入)
afl-tmin -i input/sample.txt -o output/map.txt -f test -- ./target
5. -t msec
每次运行的超时时间(1000 毫秒)
afl-tmin -i input/sample.txt -o output/map.txt -t 1000 -- ./target
6. -m megs
子进程的内存限制(0 MB)
afl-tmin -i input/sample.txt -o output/map.txt -m 20 -- ./target
7. -O
使用纯二进制插桩(FRIDA 模式)
afl-tmin -i input/sample.txt -o output/map.txt -O -- ./target
8. -Q
使用纯二进制插桩(QEMU 模式)
afl-tmin -i input/sample.txt -o output/map.txt -Q -- ./target
9. -U
使用基于 Unicorn 的插桩(Unicorn 模式)
afl-tmin -i input/sample.txt -o output/map.txt -U -- ./target
10. -W
使用基于 QEMU 的 Wine 插桩(Wine 模式)(此处并非必需,为了与其他 afl-* 工具保持一致)
afl-tmin -i input/sample.txt -o output/map.txt -W -- ./target
11. -X
使用 Nyx 模式
afl-tmin -i input/sample.txt -o output/map.txt -X -- ./target
最小化设置
12. -e
求解边仅覆盖,忽略命中计数
afl-tmin -i input/sample.txt -o output/map.txt -e -- ./target
13. -l bytes
设置最小块删除长度以加快最小化速度
afl-tmin -i input/sample.txt -o output/map.txt -l 24 -- ./target
14. -x
将非零退出代码视为崩溃
afl-tmin -i input/sample.txt -o output/map.txt -x -- ./target
15. -H
最小化挂起(挂起模式)
afl-tmin -i input/sample.txt -o output/map.txt -H -- ./target
afl-whatsup
afl-fuzz 状态检查工具
1. 帮助文档
afl-whatsup
2. -d
包含失效模糊器的状态
afl-whatsup -d output
3. -m
仅显示最少量的状态
afl-whatsup -m output
4. -n
无彩色输出
afl-whatsup -n output
5. -s
跳过详细信息,仅输出摘要结果
afl-whatsup -s output
总结
AFL++ 作为经典模糊测试工具 AFL 的增强版,不仅继承了高效的变异引擎和语义感知能力,还引入了多种现代化特性,如持久化模式、QEMU 模拟、协作模糊和自定义调度器等,极大地扩展了其在不同测试场景中的适用性。实际应用表明,AFL++ 在发现内存安全漏洞、未处理的异常逻辑及边界条件问题方面表现出色,尤其适合构建自动化、安全性强的漏洞挖掘体系。掌握并灵活运用 AFL++,将大大提升安全研究人员在协议测试、二进制分析与软件审计中的效率和深度。
在此特别强调,本教程仅在合法授权的情况下进行测试和研究,请勿用于其他用途。未经授权使用此类工具可能会侵犯他人隐私,触犯相关法律,任何因此引发的法律或利益纠纷与本人无关。
欢迎各位大佬,小白来找我交流。