0 / 0 / 0
Регистрация: 24.10.2013
Сообщений: 89
|
|
1 | |
Переполнение буфера, адрес возврата23.03.2015, 18:39. Показов 9407. Ответов 26
Метки нет (Все метки)
Подскажите пожалуйста, где можно найти адрес возврата при переполнении буфера. Visual Studio 2012 windows 8.1
0
|
23.03.2015, 18:39 | |
Ответы с готовыми решениями:
26
Переполнение буфера Переполнение буфера Переполнение буфера Переполнение буфера |
Ушел с форума
|
|
23.03.2015, 18:51 | 2 |
Нужно, чтобы буфер был переполнен настолько, что перезаписал то
место в стеке, где хранится адрес возврата из функции. Эту ситуацию очень непросто воссоздать, учитывая, что между буфером и стеком обычно масса других страниц памяти, они могут быть недоступны даже на чтение. А еще есть всякие ASLR, затрудняющие "предсказания" того, в каком месте располагается стек потока. В общем, в 99% случаев результатом переполнения буфера будет access violation и аварийное завершение программы.
1
|
0 / 0 / 0
Регистрация: 24.10.2013
Сообщений: 89
|
|
23.03.2015, 19:21 [ТС] | 3 |
у меня и просходит аварийное завершение, я просто думал может в исходниках какого нибуть kernel32.dll или самого exe найти его
0
|
Ушел с форума
|
|
23.03.2015, 21:36 | 4 |
Можно и самому найти. Регистр RSP/ESP указывает на верхушку стека,
там лежит адрес возврата. "RSP/ESP - (buffer + size)" - это на сколько байт нужно перезаписать буфер, чтобы добраться до позиции RSP/ESP. На современных Windows это практически всегда дохлый номер, если только речь не идет о каком-то заранее известном приложении, когда вы знаете, что буфер и стек всегда на известном удалении друг от друга.
1
|
0 / 0 / 0
Регистрация: 24.10.2013
Сообщений: 89
|
|
24.03.2015, 15:07 [ТС] | 5 |
0
|
Ушел с форума
|
|
24.03.2015, 15:28 | 6 |
А что удивляет ?
Буфер лежит в стеке. Где-то рядом, тоже в стеке, лежит адрес возврата и другие данные. Они затираются. См. выше: Такое да, можно эксплуатировать. В других случаях под большим вопросом.
1
|
0 / 0 / 0
Регистрация: 24.10.2013
Сообщений: 89
|
|
24.03.2015, 15:55 [ТС] | 7 |
так, то есть если я правильно понял это то самое количество А, когда можно добавлять адрес возврата,
это адрес по которому находится sub esp 44h? то есть strcpy(str,"\x33\x18\x41\x00");? просто у меня задача эксплуатировать это прериполнение по средствам эксплоита
0
|
Ушел с форума
|
|
24.03.2015, 16:36 | 8 |
Сообщение было отмечено rjrf как решение
Решение
Вы не туда смотрите. Адрес, по которому лежит инструкция "sub esp, 44h",
лежит в read-only памяти (read+execute, если быть точным), ее вы никак не перезапишете переполнением буфера, потому что будет AV. Вам нужно поставить точку останова на входе в show_array и посмотреть, по какому адресу в стеке лежит буфер и где в стеке лежит адрес возврата. И уже исходя из этого писать эксплойт.
1
|
Ушел с форума
|
|
24.03.2015, 17:12 | 10 |
И какой же это взлом ?
Ну у меня так один драйвер работает: находит адрес возврата в стеке и подменяет его на свою функцию. Не вижу здесь никакого криминала. И вообще, опасны не тех. средства, а мотивация... А знать, как устроено переполнение буфера и его эксплуатация, полезно. В первую очередь затем, чтобы писать устойчивый к таким атакам софт.
0
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,516
|
|
24.03.2015, 17:20 | 11 |
классический, "атака через переполнения буфера"
так это не ко мне а к правилам во первых находит а не втупую забивает буфер своим адресом во вторых как посмотреть, если программа делает что то без ведома пользователя это вирусная технология на западе против защит которые используют вирусную технологию. выигрывали суды
0
|
0 / 0 / 0
Регистрация: 24.10.2013
Сообщений: 89
|
|
29.03.2015, 03:58 [ТС] | 12 |
Нашел, оказалось вот в чем была проблема:почему то открыв kernel32.dll через ida я там не смог найти call esp, а открыв его через ollydbg(посмотрев связанные с этим exe длл) смог, типо потому что диначисекая библиотека?
Добавлено через 1 минуту Еще при написании ехплоита пытался в kernel32 найти адрес winexec с помощью ida, нашел, но он почему то не подошел, пришлоь програмно искать Добавлено через 1 минуту Думаю вы приувиличиваете, это у нас лаба такая на 3 курсе=)
0
|
Неэпический
|
|
29.03.2015, 11:56 | 13 |
Почитайте книгу Эриксона "Хакинг - искусство эксплойта.". В ней всё подробно расписано. Правда там всё заточено под Ubuntu, но я когда читал сидел на винде. Будет разница в адресах, в стратегиях распределения памяти операционной системой, в устройстве стека и кучи и т.д. На первых порах это мешает, но зато думаешь самостоятельно и быстро привыкаешь.
0
|
Ушел с форума
|
|
29.03.2015, 11:57 | 14 |
call esp - бессмысленная инструкция.
Стек лежит в неисполняемой области памяти, прыжок туда моментально приводит к access violation.
0
|
0 / 0 / 0
Регистрация: 24.10.2013
Сообщений: 89
|
|
29.03.2015, 12:00 [ТС] | 15 |
Ну не знаю) я в общеи в ntldll нашел jmp esp, вот с ним все норм, затираем main а дльше jmp esp и шел код, все работает
0
|
Ушел с форума
|
|
29.03.2015, 12:04 | 16 |
0
|
0 / 0 / 0
Регистрация: 24.10.2013
Сообщений: 89
|
|
29.03.2015, 12:21 [ТС] | 17 |
Еще, после исполнения шел кода происходит аварийное завершение программы, еще приходтся переодически менять адрес jmp esp и адреса в shellcode и кстати у друга не получается так сделать типо нет доступа при вызове.
версия 6.3.9600. 17031 нашел поиском команды jmp esp С ollydbg недавно познакомился и не знаю как функцию посмотреть
0
|
Ушел с форума
|
||||||
29.03.2015, 12:29 | 18 | |||||
Я вам продемонстрирую сейчас всю бессмысленность затеи с jmp esp:
Что такое 0xC0000005, думаю, объяснять не надо ?
1
|
0 / 0 / 0
Регистрация: 24.10.2013
Сообщений: 89
|
|
29.03.2015, 13:00 [ТС] | 19 |
Да, при отладке после шел кода как раз таки эта ошибка вылезает... спрпить с вами не могу, но могу предположить что это как то связано с тем что vs юзает ntldll
Добавлено через 16 минут https://vk.com/im?act=browse_images&id=107465 прикрепил скрины, может понятней станет почему работает
0
|
Ушел с форума
|
|
29.03.2015, 13:02 | 20 |
И зачем скрины ? Лучше опишите в деталях, как ваш эксплойт/шелл-код работает
(или как должен работать).
0
|
29.03.2015, 13:02 | |
29.03.2015, 13:02 | |
Помогаю со студенческими работами здесь
20
переполнение буфера Переполнение буфера Переполнение буфера! (наверное) Не получается сделать переполнение буфера Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |