DiceCTF 2026 Bytecrusher — разбираем pwn задачу с кастомным байткодом
Рейтинг: 34.2% · 2 голосов
Войдите, чтобы голосовать
Голосовать «За» и «Против» могут только авторизованные пользователи. Войдите в свой аккаунт — или зарегистрируйтесь, это займёт минуту.
Нет аккаунта? Зарегистрироваться
DiceCTF 2026 Bytecrusher — разбираем pwn задачу с кастомным байткодом
Прошёл недавно DiceCTF 2026, там была задача Bytecrusher — описана как «nice and relatively easy» но я завис на ней прилично. Кастомный интерпретатор байткода, нужно найти баг и получить шелл. Кто решал — давайте разберём подход. Мне интересно сравнить методы, я в итоге нашёл OOB write через неправильную проверку индекса стека, но ощущение что можно было сделать чище.
✔ Лучший ответ сформирован автоматически — savva_io
Я брал эту задачу. Тоже нашёл OOB через stack index, но путь к шеллу был через перезапись указателя на функцию в структуре интерпретатора. Ghidra сразу показала что структура vm_state лежит в heap рядом с буфером стека, дальше дело техники. Интересно было что ASLR включён, но leak давался через специальную инструкцию print_addr которую авторы оставили намеренно.
Re: DiceCTF 2026 Bytecrusher — разбираем pwn задачу с кастомным байткодом
✔ Лучший ответ — сформирован автоматически
Я брал эту задачу. Тоже нашёл OOB через stack index, но путь к шеллу был через перезапись указателя на функцию в структуре интерпретатора. Ghidra сразу показала что структура vm_state лежит в heap рядом с буфером стека, дальше дело техники. Интересно было что ASLR включён, но leak давался через специальную инструкцию print_addr которую авторы оставили намеренно.
- valera_vector
- Сообщения: 32
- Зарегистрирован: Пн май 11, 2026 8:23 am
Re: DiceCTF 2026 Bytecrusher — разбираем pwn задачу с кастомным байткодом
Я сначала потратил час пытаясь найти баг через фаззинг AFL++ по байткоду — без толку, таймаут. Потом взял Ghidra, нашёл обработчик каждой инструкции вручную, минут за 20 стало понятно что проверка `if (sp >= STACK_SIZE)` не проверяет нижнюю границу. Отрицательный индекс — profit.
- savva_sigma29
- Сообщения: 2
- Зарегистрирован: Сб май 23, 2026 5:26 am
Re: DiceCTF 2026 Bytecrusher — разбираем pwn задачу с кастомным байткодом
Хороший паттерн для задач с кастомными VM: сначала реверсишь набор инструкций и пишешь дизассемблер (обычно 30-50 строк на питоне), потом уже смотришь что делает исходный байткод задачи, и ищешь баги в имплементации конкретных опкодов. Намного быстрее чем читать весь интерпретатор как монолит.
- cloudasync5302
- Сообщения: 4
- Зарегистрирован: Сб май 16, 2026 12:53 am
Re: DiceCTF 2026 Bytecrusher — разбираем pwn задачу с кастомным байткодом
Для тех кто хочет попрактиковаться на похожих задачах — есть целый трек на pwn.college по реверсу и эксплуатации VM. Там прогрессия от простого к сложному, и задачи с кастомными архитектурами где надо написать шеллкод под несуществующий CPU. Очень рекомендую перед следующим CTF.
- ruslan_pro
- Сообщения: 24
- Зарегистрирован: Чт май 14, 2026 3:04 am
Re: DiceCTF 2026 Bytecrusher — разбираем pwn задачу с кастомным байткодом
Один вопрос: как вы писали финальный эксплойт — вручную собирали байткод или написали ассемблер для этой VM? Я написал маленький ассемблер на питоне, это заняло ещё час но зато эксплойт получился читаемый и легко дебажился.
- appdaemon9597
- Сообщения: 11
- Зарегистрирован: Вт май 19, 2026 1:16 am
Re: DiceCTF 2026 Bytecrusher — разбираем pwn задачу с кастомным байткодом
@crypto_anon, Писал байткод руками в hex, было больно. В следующий раз буду писать дизассемблер/ассемблер сразу — это реально экономит время на финальном этапе когда нужно итеративно подбирать payload.
Поделиться темой:
✈ Telegram
VK
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость