问题描述
我正在尝试使用 pngquant 对 AFL 进行模糊测试,并注意到我看到了 odd,check Syntax!
警告。 previous answer 表示 AFL 可能没有读取我指定的输入文件。我可以通过提供位于我在使用 AFL 进行模糊测试时使用的相同输入示例目录中的 png 文件来调用 pngquant
。
我执行的 AFL 命令是:
afl-fuzz -i ./in-filtered -o ./out -x ./dictionary/png.dict -- pngquant @@
AFL documentation 提到当 AFL 无法找到新路径时,可能会弹出 odd,check Syntax!
警告。
此外,我注意到一旦 AFL 开始使用 havoc
模糊测试策略就会弹出警告,下图显示只要模糊测试开始使用 havoc
,循环计数就开始增加。
解决方法
这是因为 pngquant 使用不当造成的。
当使用 pngquant 时,它会生成一个带有结果的输出文件,当你这样做两次时,你会遇到一个错误:
➜ pngquant git:(master) ✗ ./pngquant ./test/img/metadata.png
➜ pngquant git:(master) ✗ ./pngquant ./test/img/metadata.png
error: './test/img/metadata-fs8.png' exists; not overwriting
AFL 没有机会探索目标,因为它每次都会被阻挡。
快速浏览后,最简单的解决方法是这样的:
afl-fuzz -i ./in -o ./out -- ./pngquant -f -- @@
这会强制 pngquant 覆盖结果文件,从而启用 afl-fuzz。但是,请注意,这会产生大量 IO。因此,请尝试使用 /dev/null
或类似技巧来规避这一点。
愉快的模糊测试!