Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Fuzzing исследование уязвимостей методом грубой силы.pdf
Скачиваний:
1127
Добавлен:
13.03.2016
Размер:
5.96 Mб
Скачать

118

Глава 7. Фаззинг переменной среды и аргумента

объект, чтобы посмотреть, что получится. Это можно быстро сделать с помощью Perl, который в большинстве систем UNIX доступен по умолчанию:

HOME=`perl –e 'print "X"x10000'` /usr/bin/target

Это простейший способ узнать, как приложение сможет справиться с длинной переменной HOME. Тем не менее, он предполагает, что вы уже знаете, что это приложение использует переменную HOME. А ес$ ли неизвестно, какие переменные используются в приложении? Как узнать, что это за переменные?

Подсчет переменных среды

Существует по меньшей мере два автоматических способа узнать, ка$ кие переменные среды использует данная программа. Если система поддерживает подгрузку библиотеки, можно послать запрос getenv библиотеки. Новая функция getenv со стандартной функционально$ стью getenv, а также запись запроса в файл эффективно отразит все требуемые приложением переменные. Способ улучшения этого метода будет подробнее описан далее в этой главе, в разделе «Автоматизация фаззинга переменной среды».

Метод дебаггера GNU (GDB)

Мы можем применить и иной метод, обратившись к дебаггеру. С помо$ щью GDB можно ввести разрыв в функцию getenv и вбросить первый аргумент. Пример использования скрипта GDB для автоматизации в Solaris 10:

(08:55AM)[user@unknown:~]$gdb q /usr/bin/id (no debugging symbols found)...(gdb)

(gdb) break getenv

Function "getenv" not defined.

Make breakpoint pending on future shared library load? (y or [n]) y Breakpoint 1 (getenv) pending.

(gdb) commands

Type commands for when breakpoint 1 is hit, one per line. End with a line saying just "end".

>silent >x/s $i0 >cont >end (gdb) r

Starting program: /usr/bin/id [...]

Breakpoint 2 at 0xff2c4610

Pending breakpoint "getenv" resolved (no debugging symbols found)...

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]