![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Royan |
|
|||
|
Dreamer ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 14.9.2002 Где: Лондон Репутация: нет Всего: 15 |
Я тут реально с преподом на экзамене побузил по этому поводу, и почувствовал себя реальным лохом, потому что не сумел логически выстроить стройную цепочку. В общем, билет был именно насчет переполнения стека. Короче вот, что я смог найти из классических вариантов buffer overflow:
Собственно вопрос такой, кто знает, какие есть еще способы переполнить буфер? -------------------- Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь |
|||
|
||||
| Royan |
|
|||
|
Dreamer ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 14.9.2002 Где: Лондон Репутация: нет Всего: 15 |
Конечно же в subj имелось ввиду переполнение буфера, меня проглючило
-------------------- Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь |
|||
|
||||
| Fixin |
|
||||
![]() Ёжик ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1357 Регистрация: 6.1.2004 Репутация: 2 Всего: 18 |
Компил покажет переполнение. Точно не знаю, но когда-то вроде у меня такое случилосью Добавлено @ 19:24 Ну тогда:
|
||||
|
|||||
| En_t_end |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2074 Регистрация: 4.12.2004 Репутация: 1 Всего: 20 |
Почитай книгу у меня в подписи
Её авторы - это настоящие мастера buffer overflow, под эти дела у них целая глава Это сообщение отредактировал(а) En_t_end - 22.6.2005, 19:29 |
|||
|
||||
| Fixin |
|
|||
![]() Ёжик ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1357 Регистрация: 6.1.2004 Репутация: 2 Всего: 18 |
|
|||
|
||||
| En_t_end |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2074 Регистрация: 4.12.2004 Репутация: 1 Всего: 20 |
|
|||
|
||||
| Fixin |
|
|||
![]() Ёжик ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1357 Регистрация: 6.1.2004 Репутация: 2 Всего: 18 |
Ну... там уж недалеко осталось.
|
|||
|
||||
| Royan |
|
|||
|
Dreamer ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 14.9.2002 Где: Лондон Репутация: нет Всего: 15 |
2En_t_end Что-то я в толк не возьму где там эта книга, ты бы лучше прямую ссылку дал.
-------------------- Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь |
|||
|
||||
| En_t_end |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2074 Регистрация: 4.12.2004 Репутация: 1 Всего: 20 |
Royan
Пожалуйста... http://forum.vingrad.ru/index.php?showtopic=53777 Все обсуждения по ней в ту ветку. |
|||
|
||||
| vadims |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 305 Регистрация: 8.6.2005 Репутация: 2 Всего: 17 |
Вот уж вопрос так, вопрос - как написать заведомо отстреливающийся код Вообще-то непонятно почему ты решил, что при int foo(char *s)
если strlen(s) < sizeof(buf) то все нормально, если больше - то уж извини, вне зависимости от того локальный это массив или глобальный, конструкция аналогична while( char *ptr = NULL ) *ptr++=0; для того чтобы исключить подобные вещи используй strncpy(buf,s,sizeof(buf)-1) --------------
Извиняюсь, невнимательно прочитал Это сообщение отредактировал(а) vadims - 23.6.2005, 07:21 -------------------- Cpu not found ! Press any key for software emulation. |
||||||
|
|||||||
| oleg1973 |
|
|||
![]() asm fanat ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3283 Регистрация: 16.7.2003 Где: Italy Репутация: 1 Всего: 34 |
обясняю на пальцах )
функция strcpy на асме выглядит примерно так
в данном случае при вызове нашей функции стек выглядит так param1 param2 адрес возврата буффер у нас расчитан на 16 байт значит передав в качестве параметра некий стринг более 16 байт мы перезапишем адрес возврата и по завершению функция не вернетсу туда лткуда ее вызвали а прыгнет на тот адрес который мы подсунули типа: всякиеданные16байт+4байта вот последние 4 байта у нас и перезапишут адрес возврата ну эт так сказать теория, на практике иногда не совсем так получается -------------------- SST 465555 icq 200-512-712 |
|||
|
||||
| vadims |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 305 Регистрация: 8.6.2005 Репутация: 2 Всего: 17 |
Ой, на практике такое может получиться, что хоть всех святых выноси Но суть то одна - ОТСТРЕЛИТСЯ программа то !!! -------------------- Cpu not found ! Press any key for software emulation. |
|||
|
||||
| Гость_VIKT0R |
|
|||
|
Unregistered |
Ссылки:
ru: Modern_kinds_of_system_attacks: http://lbyte.ru/txt/misc/cabzz.txt Kids Buffer Overflow Paper: http://www.securitylab.ru/48885.html Написание эксплойтов переполнения буфера - туториал для новичков: http://wasm.ru/article.php?article=buf_over4noob Как устроены эксплоиты: http://rootteam.void.ru/article.php?txt=expleng Ховард М. "Защищенный код": http://84.252.140.76/MSDVD/Zachita.zip end ru en: Writing buffer overflow exploits - a tutorial for beginners: http://www.shellcode.com.ar/docz/bof/mixter-smash.txt An Introduction to executing arbituary code via stack overflows: http://www.shellcode.com.ar/docz/bof/overflow_tutorial.txt HEAP OVERFLOW TUTORIAL: http://www.shellcode.com.ar/docz/bof/heap-tute.txt end en Пример:
Компилируем. VC6.0 или lcc или gcc-2.95.2. Запускаем... stackOverrun.exe AB23 Если передать большую строку, в стек попадут некоторые символы из передаваемой строки. Посмотрим, какие буквы обозначают коды этих символов. Стек (для VC6) - 00401060. Значит, подставив вместо них адрес функции bar, программа выведет надпись HACK. Передавать надо наоборот, то есть 6010 40 Для VC6 достаточно в HEX-редакторе набрать: 7374 6163 6B4F 7665 7272 756E 2E65 7865 2041 4232 3343 3030 4447 4849 4A60 1040 Сохранить файл с расширением .cmd в директорию с откомпилированным файлом и запустить. |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |