![]() |
![]() |
![]() | |
Содержание Еще раз о переполнение буфера.(для начинающих) На эту тему было много написано но всё же... может моя статья будет поинтереснее. Все знают что большенство удаленных атак осуществляется путем переполнения буфера, самым лакомым куском данной атаки является вызов командного интерпритатора. Стек это область памяти которую выделяет система для переменных, которые использует та или иная программа. Буфер это ячейка памяти в стеке.Этой ячейки не известно какая длина переменной, она может быть и 10 символов и 20 главное что бы в коде программы был ограничитель ввода в эту переменную.В буфере вблизи от его конца лежит адрес возврата и если его затереть то управление получит совсем другая функция. Что бы не грузить теорией можно разобраться на живом примере. Наш подопытный Ichat 1.30 неплохой чат для локальной сети. Попробуем пофлудить... но к сожалению число вводимых символов ограничено, как не пытайся стек не сорвать. Пробуем исследовать дальше, находим функцию быстрых сообщений, попробуем использовать ее. Задодим максимальную длину сообщения и горячие клавиши, проверяем в поле для ввода, оказалось что тут число символов не ограничено. Вводим до посинения отправляем... программа закрылась. Теперь идет этап трудотерапии "Испытание черного ящика"! (есть конечно более осмысленные методы поиска ошибок но этот материал ориентирован на начинающих). После нескольких минут испытаний находим количество символов при котором Ichat выводит ошибку. Рис 1. ![]() Что же тут? Инструкция по адресу 0040432E обратилась к памяти по адресу 41414141. Первый адрес нас совершенно не интересует, запустим HEX редактор и введем наш второй адрес получим "AAAA". У меня "АААА" это часть быстрого сообщения. Из этого следует что именно эти 4 буквы перезаписывают адрес возврата.Запускаем OLLYDBG и снова срываем стек. Рис 2. ![]() Нас интересует регистр ESP в момент срыва. Вводим адрес из регистра в дамп, находим нашу стоку быстрого сообщения и запоминаем адрес у меня он равен 0012FB94(у вас может быть другим). Теоритически можно была бы представить 0012FB94 в виде букв в том же HEX редакторе и подменить "АААА" на нужный нам адрес, а там записать shell-код. Но к сожалению половина символов не печатаемая. Надо писать эксплойт, а это тема следующей статьи. При испытаниях данной уязвимости в сети, все машины соединенные в чате подверглись Ddos'у этого приложения. Можно сказать Ddos своими руками. P.S. На момент написания это 0day.=) Эта маленькая статья направлена на тех кому надоело "л0мать мыла и аськи" и хочется продвигаться дальше. Specialy for TGBR E-ZineS #2 from hellwood. |
||
![]() |
![]() |
|