Данные для тестирования в контексте фаззинга называются "corpus". Это могут быть любые файлы, например png,zip,pdf,etc. Расширение файла подбиравется в зависимости от того с каким расширением взаимодействует приложение. Чем больше данных для тестирирования - тем лучше.
Создание уникального "corpus":
Утилита afl-cmin применяется для удаления из корпуса входов, которые не дают нового пути/покрытия в целевой группе.
afl-cmin -i INPUTS -o INPUTS_UNIQUE -- bin/target -someopt @@
- Если цель читает из stdin (стандартный ввод):
afl-cmin -i INPUTS -o INPUTS_UNIQUE -- bin/target -someopt
Минимизируем файлы "corpus":
mkdir input
cd INPUTS_UNIQUE
for i in *; do
afl-tmin -i "$i" -o "../input/$i" -- bin/target -someopt @@
done
- С помощью afl-clang-fast вы можете установить AFL_LLVM_DICT2FILE=/full/path/to/new/file.dic для автоматической генерации словаря во время компиляции цели. Добавление AFL_LLVM_DICT2FILE_NO_MAIN=1, чтобы не разбирать main (обычно это разбор параметров командной строки), также часто является хорошей идеей.
- Указать afl-fuzz загрузить словарь: использовать флаг
-x dictionaries/FORMAT.dict
.