buffer overflow эксплойт не работает ASLR и NX как обойти для учебного CTF

Рейтинг: 48% · 15 голосов
Capture The Flag, реверс бинарных файлов, разработка эксплойтов, ассемблер, форензика, крэкми и задачи по информационной безопасности.
Ответить
Аватара пользователя
dnscache8196
Сообщения: 32
Зарегистрирован: Вс май 10, 2026 10:26 pm

buffer overflow эксплойт не работает ASLR и NX как обойти для учебного CTF

Сообщение dnscache8196 »

Делаю задание по pwn на учебном CTF внутри универа. Бинарь под Linux x64, есть очевидное переполнение буфера (strcpy без проверки длины). Написал простой эксплойт с шеллкодом — не работает, segfault. Проверил: NX включён (стек невыполняемый), ASLR включён на системе. PIE у бинаря выключен. Как продвигаться дальше?
👍1 ❤️ 🔥2 😄 🤔
✔ Лучший ответ выбран автором и совпадает с автоматическим подбором — 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

Сообщение coredata6336 »

Раз PIE выключен — это уже большая удача, адреса самого бинаря фиксированы. ASLR рандомизирует только стек, кучу и библиотеки. Против NX стандартный ответ — ROP (Return-Oriented Programming): вместо шеллкода в стек кладёшь цепочку адресов гаджетов из самого бинаря или из libc. Раз PIE нет — гаджеты из бинаря всегда на одних адресах.
👍1 ❤️ 🔥 😄 🤔
Аватара пользователя
julia_py
Сообщения: 10
Зарегистрирован: Ср май 20, 2026 10:00 am

Re: buffer overflow эксплойт не работает ASLR и NX как обойти для учебного CTF

Сообщение julia_py »

✔ Лучший ответ — выбран автором и совпадает с авто-подбором
Для начала освой ret2plt / ret2libc — это проще чем полноценный ROP. Схема: переполняем буфер, перезаписываем return address адресом функции puts@plt, передаём ей аргументом адрес puts@got, она распечатает реальный адрес puts в libc. Из реального адреса вычисляешь базу libc (адрес puts минус puts_offset из libc), потом вызываешь system('/bin/sh') с известным теперь адресом. Весь этот процесс автоматизируется через pwntools буквально в 40 строк Python.
👍1 ❤️ 🔥1 😄 🤔1
Аватара пользователя
olga_tcp
Сообщения: 34
Зарегистрирован: Пн май 11, 2026 12:27 am

Re: buffer overflow эксплойт не работает ASLR и NX как обойти для учебного CTF

Сообщение olga_tcp »

Конкретно по инструментам: ROPgadget или ropper для поиска гаджетов (`ROPgadget --binary ./vuln --rop`), pwntools для написания эксплойта. Обязательно используй `pwntools` с `context.binary = ELF('./vuln')` — он автоматически подтянет архитектуру и размеры. Для отладки эксплойта незаменим `gdb` с плагином pwndbg или peda — там есть команда `cyclic` для точного определения оффсета до RIP.
👍 ❤️ 🔥 😄 🤔
Аватара пользователя
mark_ml
Сообщения: 36
Зарегистрирован: Вт май 12, 2026 12:33 am

Re: buffer overflow эксплойт не работает ASLR и NX как обойти для учебного CTF

Сообщение mark_ml »

Небольшая деталь которую все забывают: при ret2libc на x64 перед вызовом system нужен гаджет `ret` (просто ret без ничего) для выравнивания стека по 16 байт — иначе падает в movaps внутри libc. Потерял на этом часа три когда первый раз делал.
👍6 ❤️2 🔥3 😄 🤔1
Аватара пользователя
ksenia_py40
Сообщения: 3
Зарегистрирован: Вс май 10, 2026 8:30 pm

Re: buffer overflow эксплойт не работает ASLR и NX как обойти для учебного CTF

Сообщение ksenia_py40 »

Если хочешь понять тему глубже а не просто решить таск — прочти серию статей 'ROP Emporium' (ropemporium.com), там 8 задач специально спроектированных чтобы объяснить ROP от простого к сложному. Каждая задача вводит один новый концепт. После них pwn-таски начального уровня на CTFtime решаются на автомате.
👍1 ❤️1 🔥1 😄3 🤔2
Аватара пользователя
vitaly_io
Сообщения: 5
Зарегистрирован: Пн май 11, 2026 5:10 pm

Re: buffer overflow эксплойт не работает ASLR и NX как обойти для учебного CTF

Сообщение vitaly_io »

После решения обязательно напиши мини-райтап хотя бы для себя. Через месяц забудешь детали, а так будет чем освежить память. И другим участникам форума полезно — тема популярная, вопросов по ret2libc здесь регулярно задают.
👍1 ❤️ 🔥2 😄3 🤔1
Ответить
Поделиться темой: ✈ Telegram VK

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость