AFL (странно, проверьте синтаксис!)

Я пытаюсь фаззить pngquant, используя AFL и заметил предупреждение odd, check syntax!. предыдущий ответ говорит, что AFL, вероятно, не читая указанный мной входной файл. Я могу вызвать pngquant, предоставив файл png, расположенный в том же каталоге входных образцов, который я использовал при фаззинге с AFL.

Команда AFL, которую я выполнил:

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

В документации AFL упоминается, что предупреждение odd, check syntax! может появиться, когда AFL не может найти новые пути.

Кроме того, я заметил, что предупреждение появляется, как только AFL начинает использовать стратегию фаззинга havoc, изображения ниже показывают, что счетчики циклов начинают увеличиваться, как только фаззер начинает использовать havoc.

AFL начинает фаззинг

AFL показывает предупреждение при фаззинге с помощью havoc


person Keanu    schedule 24.12.2020    source источник


Ответы (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. Однако имейте в виду, что это производит много операций ввода-вывода. Поэтому попытайтесь обойти это, используя /dev/null или подобные приемы.

Удачного фаззинга!

person dv3    schedule 30.12.2020