afl++下载:
网上有很多,用命令行下载即可,最后打开大概是这样
使用的路由器固件:tenda AX12 V.10 升级软件 V22.03.01.46
binwalk -ME US_AX12V1.0in_V22.03.01.46_cn_TDC01.bin
命令直接解包.bin文件,解包后选择固件进行fuzz测试
在squashfs-root中有bin文件、sbin文件、usr/bin文件、usr/sbin文件
bin
文件夹:通常包含可执行文件,即二进制程序文件,用于执行各种系统命令和程序。sbin
文件夹:与bin
类似,但通常包含的是系统管理员使用的系统命令,需要超级用户权限才能执行。usr/bin
文件夹:包含用户安装的应用程序的可执行文件。usr/sbin
文件夹:包含用户安装的系统管理员应用程序的可执行文件,需要超级用户权限才能执行。
注意我们之后的模糊测试很多要在root权限下才能做
在网上找的最简单的AFL入门测试先练练手
afl-fuzz -i fuzz_in -o fuzz_out ./afl_test
比较重要的一条命令↑,看到我们的fuzz运行界面如下,给我们显示了很多重要的信息,圈红框的在实时跳动着:
-
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: 达到的代码路径数量。
-
stage progress:
- now trying: 当前测试阶段(例如,havoc表示在关键位置插入随机变异)。
- stage execs: 在当前阶段执行的测试次数。
- total execs: 总测试次数。
- exec speed: 每秒执行的测试次数,在500以下就算很慢了,应该找寻更好的测试方法
-
fuzzing strategy yields:
- 不同的模糊测试策略的结果。例如,位翻转、字节翻转、算术操作等。
- pending: 待处理的测试项数量。
- pending favored: 待处理的受欢迎(即高概率导致崩溃的)测试项数量。
-
strategy: exploit:
- 模糊测试的策略,可能包括利用已知漏洞进行深入测试。
-
其他信息:
- 崩溃的总数、已保存的崩溃的数量和超时的总数。
- CPU 使用率。
接下来摸索动态插桩QEMU(quick emulator快速仿真)模式的使用:
报错:no instrumentation detected 没找到插桩
参考资料:
基于模糊测试的分布式数据库安全研究(三)——afl-cmin、afl-tmin_afl-cmin和afl-tmin使用-CSDN博客