Реквием по Первенству
Pudge Fun ClubПролог
Я не умею подробно расписывать воспоминания, однако очень постараюсь ничего не упустить в этом событии, а для этого начну с самого начала и потом потихоньку перейду к главной теме.
Начало
Когда мы только пришли и соревнование началось, я, к своей радости, увидел свою категорию, что на самом деле за последнее время стало чуть ли не достижением на школьных CTF. В целом, по большей части задания были неплохие. Нам (мне и ещё двум пывнерам) удалось закрыть свою и большинство других категорий буквально за 5 часов. У нас оставалось ещё 3 часа до конца, и висели только самые «сложные» таски. Однако проблема была в том, что среди реально непростых задач затесались нерешаемые из-за ошибок или недоработок.
Тут-то и начнётся эта история. Наша команда весьма продолжительное время решала один таск в категории rev, и всем показалось, что в нём явно чего-то недостаёт. Мы спросили единственного человека, который вроде как связывал нас с авторами, если появлялись вопросы по заданиям. Как раз ему мы и задали вопрос насчёт корректности этой таски и (стоит уточнить, что это задание у команды K1DD1EF на тот момент уже было сдано) получили ответ, что задание корректно. Мы решили его оставить, так как идей по решению не было.
Спустя некоторое время организаторы дали форму для прямой связи с авторами заданий. И, как стало известно под конец соревнования, с тем же вопросом, что был у нас, обратилась другая команда — уже к автору. Но он им ответил, что таск действительно нерабочий, и дал им исправленную версию. ОДНАКО стоит вспомнить, что у нас уже были K1DD1EF, которые решили этот таск! Та команда решила спросить автора, а можно ли вообще эту задачу решить в первоначальном виде, на что получила отрицательный ответ. Автору самому стало интересно, каким образом был получен флаг из нерабочего таска, и после соревнований он написал с этим вопросом человеку, который его решил. В ответ он получил отговорки в духе «Codex решил», что, мол, он сам не знает как и какими скриптами, но вечером может постараться вспомнить...
На этом странности не закончились. Было дано два таска на pwn. Первый — достаточно простой, однако решило его не так много людей, а второй был весьма необычным (pwn на ARM). Второй таск мы командой решали около 4 часов, несмотря на то, что он не очень сложный. Просто на то, чтобы вспомнить все ARM-инструкции и как их вообще дебажить, уходит время. И вот, после ивента я решил зайти на страницу их команды на CTFD и увидел, что первый pwn был сдан спустя относительно продолжительное время после начала, но вот разница между первым и вторым была всего 10 минут.
Мне стало интересно познакомиться с человеком, который, по моим меркам, владеет искусством pwn на таком высоком уровне. Я подошёл к их команде после конца соревнования с вопросом: «Кто решал pwn?». На что получил ответ, что они НЕ ПОМНЯТ, КТО КОНКРЕТНО его сделал. Я попросил их вспомнить, по их запросу минимально напомнил условие (по-моему, если ты пвнер, то на CTF, где всего два таска на pwn и один из них на ARM, для воспоминания достаточно сказать «pwn на ARM»). Сначала один человек ответил, что вроде бы он его делал, но после буквально двух вопросов сказал, что это не он, и указал на другого. Я подошёл к нему с тем же вопросом: «Как решал?». После чего и тот сказал, что второй pwn делал другой человек, который на тот момент куда-то отошёл.
Я решил для чистоты картины на всякий случай уточнить, кто делал первый pwn. Ну, мало ли, пвнер со стажем увидел, что таск на ARM реально непростой, пошёл делать его, а человеку, который хоть немного разбирается, дал первый таск. Тогда в целом понятно. НО сначала мне также указали на одного, потом на второго, и всё же оказалось, что решил его тот самый человек, который отошёл. То есть получается, что он реально сделал сначала первый pwn, а потом второй за 10 минут…
Позже мы, уже с людьми из других команд, пошли к ним ещё раз уточнить, как они решали таски: по pwn, по web, по rev (который был неисправен, а они его сдали). В ответ мы чего только не услышали: «мы не помним», «а что там за условие было? напомните хоть чуть-чуть», «а что такое pwn вообще?», «эту штуку у нас другой чел подсольвил», «ему наши девочки помогали, они очень жёсткие» (однако когда мы к ним подошли что-то спросить по таскам, ответа не получили в принципе).
На этом моменте, мне кажется, стоит также рассказать про web. Таск очень не понравился веб-разработчикам нашей команды, так как в нём, насколько я понял, был брутфорс, причём очень специфичный, вероятно, рекурсивный. Однако никто, кроме K1DD1EF, не смог до этого догадаться.
Позже из ниоткуда выплыл тот самый человек, который, по словам своих сокомандников, решил, по сути, ВСЕ таски. Мы идём к нему и видим, как девушка из его команды ему что-то шепчет на ухо. Подходим и спрашиваем: «Как решал? Что там было?». На что получаем ответ: «Парни, я не помню, я очень устал» и что-то вроде «уйдите». Ловить там явно было нечего.
По поводу того, что был сдан флаг на нерабочий таск, мы, конечно, написали жюри и ждали каких-то действий. Но вот объявляют победителей, и 1-е место занимают они. Почему? Мы решили это уточнить. После награждения мы попросили позвать главного в жюри. К нам подошла женщина, и мы ей говорим: «У вас команда, которая заняла 1-е место, залила флаг на нерабочий таск». И тут я увидел лёгкую нотку удивления на её лице. ТО ЕСТЬ ЖЮРИ ДАЖЕ НЕ ЗАМЕТИЛО ЭТОГО. Они бы и не узнали или не сделали бы ничего, если бы мы им не сказали. В конечном итоге она сказала нам написать апелляцию, что я и сделал, но ответа или хоть какой-то обратной связи (кроме «Приняли в работу») пока не получил.
(Пишу через 3 дня) Ответ на апелляцию всё же пришёл. И знаете что там? Угадайте. Им просто сняли баллы за ту задачу. Видимо, ничего подозрительного, кроме этого, они не заметили, а право обжалования решения у нас отобрали.
Что в итоге?
Могла ли команда сдать pwn за 10 минут, а потом забыть, что это за категория? Могла, всякое в жизни случается. Могли ли они догадаться до решения веба с таким «большим» опытом в CTF? Могли, в жизни реально всё бывает. Могли ли они за 5 минут в начале CTF сдать три флага на rev, stego, forensic, а потом, спустя время и после ещё одного озарения, также за 6 минут — ppc, osint, crypto? Могли, кто бы им мешал?
Главный вопрос в другом: могли ли организаторы, которым прямо указали на команду(с занимательным прошлым), залившую флаг от нерабочего задания и предоставили доказательства, решить, что это не повод для дисквалификации? Могли ли они посчитать, что лучшее наказание за доказанный факт нечестной игры — это просто отнять баллы, проигнорировав собственные же правила? Видимо, для некоторых команд правила можно читать как-то по-особенному.
Ну а флаг на нерабочий таск(да и другие в целом) им, конечно, Перун нашептал. Иначе у нас мыслей нет.