0

我正在尝试使用AFL对pngquant进行模糊测试,并注意到我看到了警告。先前的回答说 AFL 可能没有读取我指定的输入文件。我可以通过提供位于我在使用 AFL 进行模糊测试时使用的同一输入示例目录中的 png 文件来调用。odd, check syntax!pngquant

我执行的 AFL 命令是:

afl-fuzz -i ./in-filtered -o ./out -x ./dictionary/png.dict -- pngquant @@

AFL 文档提到,odd, check syntax!当 AFL 无法找到新路径时,可能会弹出警告。

此外,我注意到一旦 AFL 开始使用havoc模糊测试策略就会弹出警告,下图显示一旦模糊器开始使用havoc.

AFL 开始模糊测试

AFL 在破坏时显示警告

4

1 回答 1

1

这是因为 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或类似的技巧来规避这种情况。

快乐的模糊!

于 2020-12-30T14:06:51.813 回答