Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Строку из 30 единиц (этого должно быть достаточно для любой ОС и любого компилятора). UNIX-системы



при этом выведут что-то типа <Segmentation fault, core dumped>. Информация от Windows NT (рис. 9,2) для

Хакера более наглядна - по ней сразу понятно, что произошло именно переполнение буфера с возможностью

подмены адреса возврата, так как адрес, на котором <споткнулась> программа,

Был не чем иным, как 0х31313131. Это соответствует шестнадцатеричному коду для строки из четырех

Единиц. Если ввести строку, состоящую из неодинаковых символов, например

Abcdefghijklmnopqst, то по выведенному адресу станет ясно, в каком месте строки должен стоять

Будущий адрес возврата.

Итак, цель - передача управления - хакером достигнута. Теперь дело за малым. Нужно выполнить

следующие шаги:

Найти подходящую программу, которая не только содержит процедуру, похожую на process_data(), но и

Выполняется с большими привилегиями. Если хакеру доступны исходные тексты, то особое внимание

Надо обратить на программы, содержащие функции strcat(), strcpy(), sprintf(), vsprintf(), gets(), scanf() и т. п.

Если исходных текстов нет, то остается ручной (или автоматизированный) поиск уязвимых программ, то

Есть подача на вход длинных строк и оценка результатов.

Определить для найденной программы, какой размер буфера надо использовать, где в буфере должен

Располагаться адрес возврата и т. п.

Написать код, на который осуществится переход. Для ОС UNIX стандартный вариант - вызов оболочки

следующим образом:

char *name[2]:

name[0] = "/bin/sh":

name[1] = NULL,

execve(name[0],

name, NULL):





Дата публикования: 2014-11-04; Прочитано: 333 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.005 с)...