Я пытаюсь фаззить с помощью AFL (Qemu-mode) бинарного приложения, которое постоянно ожидает данных, и поскольку я не есть исходный код для изменения бинарника так, чтобы он exit(0)
после парсинга данных столкнулся с проблемой в AFL (timeout
), поэтому решил написать обертку вокруг бинарника, чтобы можно было заставить его выйти через определенное время проходит, с учетом этого.
- Фаззер AFL: он может передавать тестовые входные данные через
STDIN
или какargument file
- бинарное приложение, которое я фаззинг, ожидает, что ввод будет в
STDIN
, и просто продолжает ждать ввода
Мои стратегии основаны на родительском/дочернем стиле (разветвлении), так что дочерним приложением будет бинарное приложение, а родитель будет следить за ним.
- родитель заставляет дочернее (двоичное-приложение) выйти со статусом 0, если ничего не происходит в течение 5 секунд (в дочернем процессе не происходит сбоя).
а также родитель отвечает за отправку входных данных дочернему элементу, который он получает от
stdin
если дочерний сбой, я хочу, чтобы родитель также сбой, чтобы
AFL
заметил это и сохранил тестовый файл, который отвечает за сбой
мои вопросы:
- как вы можете сделать дочерний выход со статусом 0 из родителя?
- как отправить данные в дочерний процесс из родительского процесса после того, как дочерний элемент запустит двоичное приложение с помощью
exec()
? - стоит ли определять падение дочернего элемента на основе статуса выхода дочернего элемента?
wait
. - person kaylum   schedule 27.03.2020