31 октября и 1 ноября прошёл онлайн-отбор X Кубка CTF России. На него зарегистрировались 1183 команды — на 520 больше, чем год назад. Впервые студенты колледжей и техникумов играли в отдельном зачёте, по числу регистраций он сразу стал вторым после академического.
Легенда десятого Кубка связала сюжеты всех сезонов: в 2017 году студенты назвали движок своего полигона в честь Софи, а в прошлом сезоне перенесли туда её сознание. Теперь участники отправляют аватаров в миры прошлых Кубков, чтобы собрать по частям бэкап и найти среди двойников настоящую Софи — только у неё есть ключ.
В зачёте СПО после игры сменился победитель. Когда R00tk1t сдала последний флаг, команда рассчитывала удержать второе место. Впереди была другая команда, но после её дисквалификации первое место перешло к R00tk1t. Всего по итогам отбора организаторы дисквалифицировали 44 команды. За сдачу чужих флагов 39 командам обнулили результат.
Репозиторий этапа — https://github.com/acisoru/ctfcup2026-quals/
Мы поговорили с победителями всех четырёх зачётов. Школьники из pwn3dByK1d\$ рассказали, что успели решить с мобильного интернета, пока чинили сеть. В ?lasos объяснили, зачем арендовали сервер прямо во время игры, а игроки 171, которые готовились решать всю ночь, запомнили момент, когда кто-то из своих сказал: «Пацаны, нам осталось всего 6 тасков».
Кто играл в отборе
В академическом зачёте зарегистрировались 440 команд, в зачёте СПО — 343, в школьном — 243, в смешанном — 157. Ненулевой результат набрали 708 команд — около 60% от числа зарегистрированных.
Участники представляли 149 вузов, 170 колледжей и 268 школ. В России на отбор зарегистрировались команды из 200 населённых пунктов в 77 регионах.
Все зарубежные команды играли в смешанном зачёте. Они представляли 13 стран — Армению, Беларусь, Вьетнам, Индию, Индонезию, Иорданию, Казахстан, Кыргызстан, Китай, Молдову, Пакистан, Таджикистан и Узбекистан. В полуфинал прошла одна зарубежная команда — из Минска. Две команды из Ташкента заняли в смешанном зачёте 12-е и 15-е места, команда из Вьетнама — 17-е.
На старте у школьников упали все три канала связи
У pwn3dByK1d\$ выбор первых заданий определила связь.
«У нас отвалилась сеть)) Причём вся, у нас было 2 беспроводных канала и один проводной, упало вообще всё», — вспоминает Глеб beskar.
Пока чинили сеть, школьники решали с мобильного интернета таски по 100 баллов. Дорогие задания отложили, полностью восстановить связь удалось после второго часа игры.
В R00tk1t сначала просмотрели весь набор, а затем разошлись по знакомым категориям:
«Сначала ознакомились с пуллом тасок, распределились изначально по своим ролям», — рассказывает капитан Павел Паштет.
В академическом зачёте игроки 171 ещё до старта договорились «не суетиться, а спокойно все обсуждать». Когда открылась борда, команду удивило количество заданий.
«А с учетом того, что мы живем в часовом поясе +7 от МСК, мысленно все смирились с тем, что придется сидет всю ночь», — говорит Матвей lagoon.
Зачем ?lasos арендовала сервер по ходу игры
К Кубку ?lasos подготовила собственные ИИ-инструменты:
«С самого начала мы делегировали все относительно простые таски нейронке, чтобы с самого начала лидировать по времени солвов», — рассказывает Артём JOJAR.
Пока модель разбирала простые задания, игроки занимались сложным вебом и реверсом. Если модель заходила в тупик, участники искали другой вектор атаки.
В таске Iso способ решения уже был понятен — требовалось перебрать параметры. Но на машине, где шёл перебор, это занимало слишком много времени.
«Поэтому пришлось арендовать прям по ходу соревнования отдельный сервер, на котором мы уже смогли добрутить до флага», — вспоминает JOJAR.
В R00tk1t тоже использовали ИИ на простых заданиях, чтобы у игроков оставалось время на сложные. А школьникам из pwn3dByK1d\$ модель помогла найти подход к таску connectome: в нём предстояло разобраться в бинарных данных, а зацепку дала биология — устройство тех участков мозга насекомых, которые отвечают за обучение и адаптацию.
«От одного названия мозга ИИ провёл исследование, прочитав 3 научные бумажки про то, как оно работает и вкратце изложил что к чему», — рассказывает beskar.
По его словам, после этого пересказа у команды появились «идеи принять данные как числа и думать про графы».
Картинка на 16 тысяч пикселей и цепочка до флага
Капитану R00tk1t запомнился ker_quest:
«Например, ker_quest удивил фоткой размерами 900х16000 пикселей, на которой были символы и их нужно было прочесть. В тот момент хотелось бросить все. А, ну и нельзя не вспомнить про нарды.....» — рассказывает Паштет.
JOJAR из ?lasos выделил Hidden Network. Под конец длинной цепочки ему впервые на CTF пришлось разобраться с протоколами LTE:
«Было интересно не только раскрутить длинную цепочку, но и в конце немного разобраться в работе неизвестных для меня протоколов», — говорит он.
Другой таск, Docus, запомнили сразу две команды. Для ?lasos он оказался последним. А школьнику innongrf из pwn3dByK1d\$ понравилось, как несколько небольших уязвимостей вместе позволили прочитать флаг. Вот как он описал решение:
«Конкретно тут запомнилась инъекция параметров lang, она включала макросы в Collabora, в которой ODT загружал динамическую библиотеку (.so), а её конструктор через унаследованный дескриптор читал флаг вне ограничений в коде.»
Кто смотрел на борду перед финишем
lagoon из 171 помнит момент, когда команда поняла, что может закончить гораздо раньше, чем рассчитывала. Кто-то из игроков сказал: «Пацаны, нам осталось всего 6 тасков». За соперниками по-прежнему почти не следили.
«Борду особо не чекали, мысль была «как получится так получится»», — вспоминает Матвей.
171 выиграла академический зачёт, а в общей таблице, по словам игрока, опередила ближайшую команду примерно на 30 секунд.
В смешанном зачёте всё решилось для ?lasos на Docus:
«Только после получения флага на Docus мы поняли, что успели закрыться первыми», — рассказывает JOJAR.
Первое место удивило игроков: в этом зачёте, по словам Артёма, традиционно выступают сильные команды. После этого участники «гордо пошли отдыхать после «спидрана»».
У школьников к финишу уже был запас:
«В нашем зачёте просто дорешивали своё, на тот момент был отрыв в 3000+ очков, это около 3-4 задач», — говорит beskar из pwn3dByK1d\$.
Для R00tk1t игра закончилась ночью. К моменту последней сдачи Паштета интересовало, удержится ли команда на второй строчке зачёта СПО:
«Мы думали, что уже никак не выйдем на первое место, ибо лидировала команда из другого колледжа, мы лишь надеялись на то, что нас не скинут со второго места», — вспоминает он.
В выходе на очный этап Павел не сомневался. Но у команды была своя цель:
«Мы бы прошли в любом случае, даже если бы нас скинули со второго, но мы искренне хотели отобраться с первого, чтоб закрыть гештальт»
Кто прошёл на очные этапы

Очные этапы X Кубка CTF России пройдут с 4 по 6 декабря в Москве, в павильоне «Умный город» на ВДНХ.
- 4 декабря пройдут финалы школьного зачёта и зачёта СПО. В каждом определится свой победитель.
- 5 декабря команды смешанного и академического зачётов сыграют в полуфинале. В суперфинал выйдут по две команды из каждого зачёта.
- 6 декабря четыре команды сыграют в суперфинале.
| Зачёт | Откуда прошли участники |
|---|---|
| Академический | Москва, Санкт-Петербург, Московская и Томская области, Хабаровский край |
| Смешанный | Москва, Санкт-Петербург, Ленинградская, Свердловская, Воронежская, Московская и Омская области, Пермский край, ДНР, Мордовия, Коми и Беларусь |
| Школьный | Москва, Санкт-Петербург, Московская, Новосибирская, Самарская и Астраханская области, Краснодарский и Пермский края, Татарстан |
| СПО | Москва, Московская, Свердловская, Смоленская, Мурманская, Ростовская и Белгородская области, Краснодарский край, Татарстан |