Сейчас на форуме: rmn, Magister Yoda, vasilevradislav, tyns777, zombi-vadim (+4 невидимых) |
eXeL@B —› Программирование —› Переполнение - возврат |
Посл.ответ | Сообщение |
|
Создано: 13 мая 2008 07:49 · Личное сообщение · #1 Пару лет назад кричали - SP2, защита от выполнения кода в стеке, overflow умрёт! Не умер, зараза, так что решил разобратся с реализацией. Пример из wiki /* overflow.c - демонстрирует процесс переполнения буфера */
Шелкод написал, без нулей, место для подмены адреса возврата нашёл, но! Адрес, по которому в стеке лежит наш код - 001234ААh. Вот этот 00h в подменяемом адресе возврата всё портит. При считывании параметров доходит до 00 и прекращает читать строку! Как это забороть? Вообще, ссылкой на доходчивую статью по переполнению не поделитесь? PS крякинг к теме всё таки где-то близко ;) |
|
Создано: 13 мая 2008 07:54 · Личное сообщение · #2 |
|
Создано: 13 мая 2008 09:35 · Личное сообщение · #3 |
|
Создано: 13 мая 2008 09:53 · Личное сообщение · #4 |
|
Создано: 13 мая 2008 10:04 · Личное сообщение · #5 |
|
Создано: 13 мая 2008 10:31 · Личное сообщение · #6 |
|
Создано: 13 мая 2008 10:51 · Поправил: Freecod · Личное сообщение · #7 дадада. Мне интересен данный момент - в стеке на месте адреса возврата левые данные. Мне нужно вставить туда указатель на мой код в стеке, так же переданный в строке. Но адрес-то с 00h! Внятно статьях описывается только собстно баг перезаписи чужих ячеек стека у локальных переменных. Потом - "передав нужную строку, можно подменить адрес возврата указателем на свой код". Куда свой код помещать? Каким образом? Как быть, если в этом адресе есть 00h? |
|
Создано: 13 мая 2008 11:21 · Личное сообщение · #8 |
|
Создано: 13 мая 2008 11:48 · Поправил: Freecod · Личное сообщение · #9 Господи, убейте мой мозг тапком. Может у меня кодировка неправильная, и мои посты закорючками рисуются, вот меня никто и понять не может? Пост от 13 мая 2008 10:51:11 - подробнее или понятнее я объяснить суть вопроса не могу. Но постараюсь, т.к. очень хочется получить ответ. Компилирую программу. Пишу офсет-независимый шелкод без 00h, т.е. можно передать в строке параметров. Запускаю overflow.exe "1234567890FFFF[тут 4 байта, подменяющие адрес возврата][тут шелкод]" Внимание, вопрос! 4 байта, подменяющие адрес возврата не должны содержать 00h, т.к. остальная часть строки не обработается. Но в стек растёт от 0012FFFCh. Следовательно передать управление на мой шелкод по возврату я не могу (т.к. 00h!). Как действовать дальше??? |
|
Создано: 13 мая 2008 12:00 · Поправил: sss · Личное сообщение · #10 |
|
Создано: 13 мая 2008 15:39 · Личное сообщение · #11 Freecod Во время переполнения под оллей посмотри какие регистры куда смотрят. Обычно ESP смотрит на вершину стека вот этим и воспользуйся! Прыгни на любой участок памяти содержащий опкод CALL ESP или JMP ESP. Тогда сможешь обойти свою проблему с 0x00 вначале адреса. А вообще много статей на www.securitylab.ru Например вот здесь с примерами нормально расматривается www.securitylab.ru/analytics/216312.php ----- Computer Security Laboratory |
|
Создано: 13 мая 2008 20:26 · Поправил: s0larian · Личное сообщение · #12 |
|
Создано: 13 мая 2008 20:51 · Личное сообщение · #13 |
|
Создано: 13 мая 2008 20:56 · Личное сообщение · #14 |
|
Создано: 14 мая 2008 04:59 · Личное сообщение · #15 Freecod, получается, что если ты пользуешься уязвимостью обработки командной строки некой программы, перекомпилировать которую ты не можешь, ни хера не получиться... Если только не воспользоваться поиском кодов в пространстве библиотек системы, в адресе которого нет 0. Например, ищи опкод jmp esp - 4 (требуемый офсет) и кодируй в строке адрес этой команды. |
|
Создано: 14 мая 2008 11:59 · Личное сообщение · #16 |
|
Создано: 15 мая 2008 04:26 · Поправил: sss · Личное сообщение · #17 |
|
Создано: 15 мая 2008 07:19 · Личное сообщение · #18 Друзья с ачата написали неплохую статью, сцылку лень искать, вот здесь всё что было: fa72_15.05.2008_CRACKLAB.rU.tgz - !переполнение буфера by KEZ.rar |
|
Создано: 15 мая 2008 09:30 · Личное сообщение · #19 |
|
Создано: 15 мая 2008 13:12 · Личное сообщение · #20 Помнится поднимал я подобную тему года два назад http://exelab.ru/f/action=vthread&forum=1&topic=6596&page= 0 ----- Nulla aetas ad discendum sera |
eXeL@B —› Программирование —› Переполнение - возврат |