Учебное руководство по эксплуатации уязвимости 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