Skip to content

Latest commit

 

History

History
25 lines (22 loc) · 1.79 KB

Corpus.md

File metadata and controls

25 lines (22 loc) · 1.79 KB

СОЗДАНИЕ ТЕСТОВЫХ ДАННЫХ ("CORPUS"):

Данные для тестирования в контексте фаззинга называются "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.