Search
Write a publication
Pull to refresh

Comments 4

В разделе "Подготовка Curl" речь о сборке с адресным санитайзером, но в CFLAGS стоит undefined, хотя LDFLAGS корректный

Опечатался, спасибо

Фаззинг функций, обрабатывающих аргументы командной строки

Для воссоздания структуры argv вы разделяете входную строку по пробелам, но они могут использоваться в http-заголовках, url (с некоторыми нюансами) и прочих полях, которые могут обрабатываться curl'ом (а может и нет, но флаг CURLU_ALLOW_SPACE есть)

Также приведённый пример в "Структура массива argv" со строкой "Two Three" не выглядит валидным тогда :)

В репозитории AFL++ есть готовый вариант обвязки для фаззинга через аргументы, который применим и для libfuzzer. В нём разделение идёт по двум подряд стоящим нуль-терминаторам, но в аргументах может быть не только ascii

CURLU_ALLOW_SPACE - Разрешает пробелы в URL если вы используете curl_url_set() с этим флагом, пробелы могут быть приняты и сохранены.

Можете не разбивать по пробелам. Вероятность того, что вы получите неверный url выше чем при разбивке по пробелам. Например оставите пробел в названии протокола.

Моменты с пробелами в url будут покрываться фаззером при помощи генерации последовательности -%20

Вероятность подачи фаззером одна байта (в виде пробела) выше, чем двух-подряд идущих одинаковых байтов (нул-терминатора) согласно мат.статистике.

Опять же:
Автор не претендует на описание самых эффективных или универсальных методов фаззинга. 

Если вы предпочитаете использовать стандартный header от afl++, то это ваш выбор.

Sign up to leave a comment.

Articles