По итогам RuCTF 2014 Quals

67 views
Skip to first unread message

RuCTF

unread,
Mar 13, 2014, 3:06:03 PM3/13/14
to RuCTF Maillist
Всем привет!
 
Три дня назад закончились отборочные соревнования RuCTF 2014 Quals. Это уже шестые отборочные, проведённые нами, и, как нам кажется, каждый год мы заметно подрастаем. В первую очередь хочется поблагодарить всех тех, без кого этот рост был бы невозможен. Людей, которые делали предыдущие RuCTF’ы, наших “отцов-основателей” этого соревнования Илью Зеленчука и Колю Журавлёва, и в особенности — тех, кто сделал только что прошедшие отборочные.
 
Команда разработчиков увлеченно работала, чтобы сделать качественный CTF, придумать интересные задания, доставить участникам максимум удовольствия и справедливо выбрать команды для участия в финале. Все люди, перечисленные на странице http://ructf.org/2014/ru/devteam, привнесли свой вклад в успех этого мероприятия.
 
Мы рады, что у нас есть постоянные участники, возвращающиеся на наши соревнования из года в год. Мы также приветствуем всех тех, кто в этом году попробовал играть в RuCTF (а возможно, и вообще — в CTF) впервые. Искренне надеемся, что вам понравилось, и что мы увидимся и в следующем году!
 
Но мы выросли не только с точки зрения количества участников. Хочется отметить несколько моментов, над которым мы работали в этом году.
 
Во-первых, мы провели полную интернационализацию отборочных соревнований. В прошлом году в качестве эксперимента мы разрешили участвовать иностранным командам, и у нас было 218 команд, из которых 83 русские. В этом году мы изначально призывали иностранные команды участвовать в RuCTF Quals, и в итоге имели почти 400 регистраций (из которых 110 принадлежат русским командам). Рост количества российских команд (почти на 30 в год!) нас радует не меньше, чем почти двукратный рост общего количества участников. Безусловно, не все команды дошли до решений заданий, но и здесь статистика радует: в этом году хотя бы одно задание решили 249 команд, в прошлом же таких было только 96.
 
Во-вторых, мы переписали нашу проверяющую систему (усилиями Сергея Азовскова и Андрея Гейна), чтобы и вам, участникам, и нам, организаторам, было удобнее. Люди, играющие в RuCTF давно, могут помнить, что у прежней проверяющей системы были некоторые проблемы — в частности, она иногда могла «потерять» баллы, набранные командами за последние несколько минут. Кстати, новая проверяющая система, как и многие наши наработки, доступна на гитхабе: https://github.com/Hackerdom/qoala.
 
В-третьих, наш администратор Андрей Малец сильно поработал над инфраструктурой RuCTF, улучшив её саму и системы мониторинга над ней. Поверьте, это не самая простая задача — за короткий срок запустить, а затем и поддерживать зоопарк из 20 виртуальных машин и необходимую инфраструктуру вокруг них.
 
В-четвёртых, мы старались работать над качеством и разнообразием заданий. В этом году у нас появились две новых категории — Hardware и Recon. Мы надеемся, что каждый, кто открыл страницу с заданиями, нашёл для себя что-нибудь интересное. Анализируя отзывы команд с прошлогодних соревнований, мы постарались значительно уменьшить количество мест, где ответ (или его формат) приходилось угадывать. Кажется, в большинстве заданий нам это удалось. В тасках, в которых это было возможно, мы ввели требование о том, что флаг должен начинаться со строки ‘RUCTF_’. В этом случае формат флага был описан непосредственно в формулировке. Таким образом, если вы находили что-то, непохожее на такую строчку, это однозначно не было ответом. Безусловно, нам есть, куда расти, и мы будем улучшать свои задания и формулировки и впредь.
 
Как и в прошлом году, мы проводим RuCTF Quals Afterparty, то есть поддерживаем всю игровую инфраструктуру ещё две недели. А ещё мы выкладываем все наши наработки на гитхаб (https://github.com/Hackerdom), а скоро там откроется и репозиторий ructf2014-quals.
 
К сожалению, не обошлось и без проблем. Нами были допущены несколько ошибок, из-за которых, в частности, пострадали часть команд. Мы приносим свои извинения всем, кто так или иначе пострадал от этих ошибок. Ниже — о некоторых из них.
 
Во-первых, и это произошло раньше всего, нам не удалось начать соревнование вовремя. Несмотря на то, что (если меня не подводит память) последние два года мы начинали все наши соревнования (отборочные, финалы и RuCTFE) вовремя, в этом году сделать нам этого не удалось по различными техническим причинам. В итоге — задержка чуть больше, чем на полчаса.
 
Во-вторых, нами были допущены ошибки в некоторых заданиях. К сожалению, это факт, и, конечно, мы не собираемся отказываться от своих ошибок. Вы все могли видеть, что мы старались оперативно исправлять ошибки и публиковать информацию об этом в разделе новостей. На странице http://quals.ructf.org/board/ видно, что все ошибки (за исключением одной из тех, что привели к серьёзным изменениям — о них ниже) были исправлены к 9 утра по московскому времени 9 марта, то есть примерно через четверть игры. Более того, большинство ошибок было исправлено в течение не более чем трёх часов после опубликования задания, а зачастую ещё быстрее.
 
В-третьих, (несмотря на то, что это является подслучаем второго пункта, хочется отметить это отдельно) в некоторых заданиях мы проглядели вариант более простого (а иногда и слишком простого) решения. Мы потратили достаточно много времени на обсуждение того, как правильно поступить в таких ситуациях, рассмотрели несколько вариантов, и выбрали тот, который, на наш взгляд, был самым правильным в этой ситуации. Что мы могли сделать в подобной ситуации?
 
1. Оставить всё как есть. Команды, которые догадываются до «читерского» решения (а это не всегда очевидно), получают баллы «на халяву». В случае с тасками Reverse:200 и Web:200 просто все получают по 200 баллов, так как решение лежит на поверхности.
 
2. Уменьшить стоимость ошибочного таска, добавив отдельно его исправленную версию. В этом случае мы даём командам все-таки порешать и получить удовольствие от того задания, которое мы подготовили изначально.
 
3. Просто исправить задание и сбросить баллы тем командам, которые уже успели его сдать (в случае с Crypto:400 это, например, одна команда).
 
Так как одной из главных целей нашего мероприятия является привнесение удовольствия в повседневную жизнь участников, нами было решено вернуть исходные задания «в строй». В одном случае — с добавлением простой версии таска, в двух других — простым исправлением.
 
В анкете, с помощью которой мы собираем от вас обратную связь, мы попросили вас указать, чтобы вы сделали на нашем месте в подобной ситуации. Нам важно знать ваше мнение, поэтому если вы еще не заполнили анкету — сделайте это.
 
Ну и наконец, в-четвёртых, мы неправильно оценили стоимости некоторых заданий. Таким образом, категория Reverse получилась упорядоченной чуть менее неправильно, чем совсем. Похожая история приключилась с некоторыми тасками категории Admin и заданием Crypto:500. Здесь стоит сказать, что практически каждый год мы тратим очень много времени на обсуждение правил начисления очков. Потратив немало человеко-часов, мы обсудили множество различных схем и в каждой нашли и сильные, и слабые стороны. Безусловно, и система 100-200-300-400-500 не является идеальной. Не исключено, что мы откажемся от неё в пользу другой, которая покажет себя лучше. Возможно, это произойдёт уже в следующем году.
 
Сейчас, после прошедших отборочных, самое время задуматься — можно ли было избежать этих ошибок? Да, думаем, большинства мы могли бы избежать при ещё более грамотном подходе к разработке. Уверен, в будущем мы сможем победить и эти проблемы.
 
Из мелких недочётов также можно отметить наше далёкое от идеала владение английским языком и связанные с этим досадные опечатки, ошибки и неверно построенные предложения. Чтобы избежать недопонимания российскими командами условий заданий, мы специально перевели их на два языка (хотя в будущем, кажется, придется переводить ещё и на японский :), однако часть сообщений публиковалась все равно только на английском языке, где и были допущены неприятные языковые ошибки.
 
В заключение мы хотели бы ещё раз от всего сердца поблагодарить тех, кто принял участие в наших соревнованиях. Мы работали не покладая рук; мы придумывали, программировали, тестировали, коммитили, пушили, разворачивали и автоматизировали всё это специально для вас. Надеемся, что вы получили от этого такое же удовольствие, как и мы! Спасибо и до новых встреч!
 
С уважением и благодарностью за красивую игру,
Команда RuCTF
Reply all
Reply to author
Forward
0 new messages