buffer overflow эксплойт не работает ASLR и NX как обойти для учебного CTF
Рейтинг: 48% · 15 голосов
Войдите, чтобы голосовать
Голосовать «За» и «Против» могут только авторизованные пользователи. Войдите в свой аккаунт — или зарегистрируйтесь, это займёт минуту.
Нет аккаунта? Зарегистрироваться
- dnscache8196
- Сообщения: 32
- Зарегистрирован: Вс май 10, 2026 10:26 pm
buffer overflow эксплойт не работает ASLR и NX как обойти для учебного CTF
Делаю задание по pwn на учебном CTF внутри универа. Бинарь под Linux x64, есть очевидное переполнение буфера (strcpy без проверки длины). Написал простой эксплойт с шеллкодом — не работает, segfault. Проверил: NX включён (стек невыполняемый), ASLR включён на системе. PIE у бинаря выключен. Как продвигаться дальше?
✔ Лучший ответ выбран автором и совпадает с автоматическим подбором — julia_py
Для начала освой ret2plt / ret2libc — это проще чем полноценный ROP. Схема: переполняем буфер, перезаписываем return address адресом функции puts@plt, передаём ей аргументом адрес puts@got, она распечатает реальный адрес puts в libc. Из реального адреса вычисляешь базу libc (адрес puts минус puts_offset из libc), потом вызываешь system('/bin/sh') с известным теперь адресом. Весь этот процесс авто…
- coredata6336
- Сообщения: 20
- Зарегистрирован: Пн май 11, 2026 3:24 pm
Re: buffer overflow эксплойт не работает ASLR и NX как обойти для учебного CTF
Раз PIE выключен — это уже большая удача, адреса самого бинаря фиксированы. ASLR рандомизирует только стек, кучу и библиотеки. Против NX стандартный ответ — ROP (Return-Oriented Programming): вместо шеллкода в стек кладёшь цепочку адресов гаджетов из самого бинаря или из libc. Раз PIE нет — гаджеты из бинаря всегда на одних адресах.
Re: buffer overflow эксплойт не работает ASLR и NX как обойти для учебного CTF
✔ Лучший ответ — выбран автором и совпадает с авто-подбором
Для начала освой ret2plt / ret2libc — это проще чем полноценный ROP. Схема: переполняем буфер, перезаписываем return address адресом функции puts@plt, передаём ей аргументом адрес puts@got, она распечатает реальный адрес puts в libc. Из реального адреса вычисляешь базу libc (адрес puts минус puts_offset из libc), потом вызываешь system('/bin/sh') с известным теперь адресом. Весь этот процесс автоматизируется через pwntools буквально в 40 строк Python.
Re: buffer overflow эксплойт не работает ASLR и NX как обойти для учебного CTF
Конкретно по инструментам: ROPgadget или ropper для поиска гаджетов (`ROPgadget --binary ./vuln --rop`), pwntools для написания эксплойта. Обязательно используй `pwntools` с `context.binary = ELF('./vuln')` — он автоматически подтянет архитектуру и размеры. Для отладки эксплойта незаменим `gdb` с плагином pwndbg или peda — там есть команда `cyclic` для точного определения оффсета до RIP.
Re: buffer overflow эксплойт не работает ASLR и NX как обойти для учебного CTF
Небольшая деталь которую все забывают: при ret2libc на x64 перед вызовом system нужен гаджет `ret` (просто ret без ничего) для выравнивания стека по 16 байт — иначе падает в movaps внутри libc. Потерял на этом часа три когда первый раз делал.
- ksenia_py40
- Сообщения: 3
- Зарегистрирован: Вс май 10, 2026 8:30 pm
Re: buffer overflow эксплойт не работает ASLR и NX как обойти для учебного CTF
Если хочешь понять тему глубже а не просто решить таск — прочти серию статей 'ROP Emporium' (ropemporium.com), там 8 задач специально спроектированных чтобы объяснить ROP от простого к сложному. Каждая задача вводит один новый концепт. После них pwn-таски начального уровня на CTFtime решаются на автомате.
Re: buffer overflow эксплойт не работает ASLR и NX как обойти для учебного CTF
После решения обязательно напиши мини-райтап хотя бы для себя. Через месяц забудешь детали, а так будет чем освежить память. И другим участникам форума полезно — тема популярная, вопросов по ret2libc здесь регулярно задают.
Поделиться темой:
✈ Telegram
VK
- Похожие темы
-
-
- Build in public — реально работает для трафика или это просто тусовка инфоцыган?
8 ответов · 469 просмотров
-
-
- AI-ассисты в геймдеве — кто реально использует в пайплайне и что работает?
6 ответов · 16 просмотров
-
-
- Kotlin Multiplatform или Flutter — что реально работает для кросс-платформы
5 ответов · 14 просмотров
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость