Перейти к содержимому

Учебное руководство по эксплуатации уязвимости Return to Libc (ret2libc) — pwn109 — PWN101 | TryH...

RazviOverflow

0:00 / 0:00

Учебное руководство по эксплуатации уязвимости Return to Libc (ret2libc) — pwn109 — PWN101 | TryH...

14 497 просмотров · 4 года назад
RazviOverflow
4,39 тыс. подписчиков
14 497 просмотров · 4 года назад
Возврат к libc (ret2libc) полностью объяснен с нуля. В этом видео мы увидим и поймем, как выполнить ret2libc в многоэтапном эксплойте. Сначала мы воспользуемся переполнением буфера, чтобы перехватить поток выполнения и получить адреса из глобальной таблицы смещений (GOT). Мы создадим специально разработанную ROP-цепочку для перехода к PLT, передавая в качестве параметров адреса из GOT. Получив необходимую информацию, мы снова выполним (второй этап) уязвимую функцию и, основываясь на полученной информации, перейдем к system(), передав в качестве параметра строку "/bin/sh". Для этого мы определим версию libc, используемую на сервере, и перейдем к определенным местам после получения динамически разрешенных адресов. Видеоуроки: Использование алгоритмов возвратно-ориентированного программирования (ROP)    • Exploiting Return Oriented Programming (RO...   Глобальная таблица смещений (GOT) и таблица связей процедур (PLT)    • Global Offset Table (GOT) and Procedure Li...   Объяснение порядка байтов. Little-Endian и Big-Endian для 32 и 64 бит:    • Endianness Explained. Little-Endian and Bi...   Дополнительные ссылки о ret2libc: Википедия: https://en.wikipedia.org/wiki/Return-... Exploitdb: https://www.exploit-db.com/docs/engli... Ired.team: https://www.ired.team/offensive-secur... Журнал Phrack: http://phrack.org/issues/58/4.html Инструменты для поиска конкретной libc версия: https://libc.rip/ https://libc.blukat.me/ https://libc.nullbyte.cat/ 00:00 - Введение 01:27 - Дополнительные ссылки для изучения ret2libc 02:08 - История ret2libc 03:07 - Дизассемблирование бинарного файла 03:25 - Проверка защиты 03:55 - Поиск уязвимости 04:51 - Обнаружение уязвимости 05:32 - Перехват потока выполнения 05:59 - Сценарий для ret2libc 06:40 - GOT и PLT 07:25 - Как получить адреса 08:04 - GOT 08:52 - PLT 09:54 - Краткий обзор 12:00 - ROP 12:38 - Какие адреса получить 13:09 - Запуск эксплойта 13:27 - Функция puts() 13:56 - Соглашение о вызове 14:25 - Поиск гаджетов 15:22 - Порядок байтов 15:56 - Вызов puts() 17:10 - Передача записи GOT в качестве параметра 18:05 - Создание полезной нагрузки 19:43 - Выполнение эксплойта 20:20 - Улучшение эксплойта 21:53 - u64() против p64() 23:12 - Выполнение эксплойта 23:28 - Исключение или ошибка 24:25 - Удаленное выполнение эксплойта 24:42 - Отладка ошибок эксплойта 26:00 - Утечка удаленных адресов 26:25 - Рандомизация ASLR и смещения адресов 27:00 - Утечка адресов сервера 27:38 - Поиск конкретной версии libc 29:11 - Второй этап эксплойта 29:35 - Адрес system() и /bin/sh 31:28 - Модификация эксплойта 32:22 - Вызов system("/bin/sh") 33:30 - Выполнение эксплойта 35:10 - Чтение флага 35:24 - Заключение[*] Эксплойт-код, а не люди. LinkedIn:   / razvioverflow   Вам понравилось видео? Нашли его полезным? Если хотите помочь, купите мне кофе (или три ☕), это очень поможет! https://ko-fi.com/razvioverflow https://paypal.me/razvigg Twitter: @Razvieu *Музыка в конце: Etsu - Selcouth GG