Когда CTFd был впервые написан, он сильно отличался от того, что есть сегодня.

Административные задачи выполнялись с использованием совершенно отдельного сервера Flask, редактора страниц не существовало, а единственная тема CTFd была написана с использованием Foundation.

CTFd был написан для замены устаревшего кода CSAW CTF, но решение перейти с Bootstrap на Foundation было не самым ярким. Bootstrap стал доминировать во внешнем интерфейсе, а Foundation стал менее распространенным. В большом и кропотливом запросе на вытягивание член OSIRIS Lab заменил Foundation на Bootstrap и создал тему CTFd, с которой знакомо большинство пользователей.

Несмотря на то, что CTFd выглядел намного лучше, код внешнего интерфейса был неорганизованным, и с ним было сложно работать. Во время разработки игнорировались служебные классы Bootstrap и множество встроенных и повторяющихся CSS.

Организаторы, использующие CTFd, по-прежнему создавали отличные пользовательские темы, но было ясно, что можно сделать больше, чтобы помочь дифференцировать CTF. Мы начали официально создавать пользовательские темы и обнаружили, что создание тем более утомительно, чем должно быть. Таким образом, в этой версии основное внимание было уделено улучшению передней части.

Спустя много часов «оригинальная» тема CTFd была преобразована в «основную» тему.

Большинство изменений, с которыми сталкиваются пользователи, не влияют на функциональность. Все стало намного лучше благодаря обновлениям в CTFd, Bootstrap, FontAwesome и Google Fonts.

Тем не менее, для организаторов CTF следует отметить множество улучшений в панели администратора.

Статистика

Страница Статистика была объединена со страницей Графики, а расчет «Процент решения за задачу» был преобразован в график на новой странице Статистика. страница.

Новая страница Статистика должна давать более полное представление о конкуренции без необходимости просматривать каждую из страниц.

Проблемы

Административный интерфейс для работы с Challenges был обновлен, чтобы информация стала более четкой и понятной. Сложный в использовании и устаревший интерфейс доски задач теперь более табличный и соответствует остальной части дизайна CTFd.

Кроме того, в то время как в предыдущих версиях CTFd атрибуты «Флаги», «Файлы», «Подсказки» и «Теги» были интегрированы в единый интерфейс задачи, в версии 1.1 они разделены на отдельные кнопки и интерфейсы.

Первоначально эти атрибуты были объединены в интерфейс задач, чтобы упростить добавление новых типов задач. Разделение этих атрибутов было сделано по разным причинам:

  • Управление вложенными модальными окнами из плагина Challenge Type было ненужным и раздражающим.
  • Эти атрибуты не часто настраиваются, потому что они являются ключевыми для работы CTFd. Если необходимо внести изменения, плагин все равно может реализовывать новое поведение за пределами основной функциональности CTFd.
  • Базовые шаблоны задач должны были быть изменены, поэтому имело смысл отделить этот код сейчас, а не позже.

Помимо выделения модальных окон атрибутов, теперь вы можете просматривать задачи из интерфейса администратора. Это позволяет вам протестировать свои ключи и получить представление о том, что видит пользователь.

Плагины

В предыдущих версиях CTFd использовал Handlebars, чтобы дать плагинам возможность управлять визуализацией задач. Это позволяет нам создавать задачи, не соответствующие стандартному формату флажков. К сожалению, хотя Handlebars является полнофункциональным, он не имеет особого смысла внутри проекта Flask, который использует шаблоны Jinja на сервере.

Вместо Handlebars CTFd теперь использует Nunjucks, который представляет собой Jinja-подобный механизм шаблонов для Javascript.

Хотя это, казалось бы, небольшое изменение, оно позволяет использовать некоторые идеи плагинов, которые раньше были невозможны. Наиболее примечательным является то, что информация о вызове теперь может отображаться на стороне сервера, а не на стороне клиента.

Вывод

Версия 1.1.0 вносит довольно много изменений. Вы можете увидеть полный список на странице релиза Github и попробовать их на демонстрационном экземпляре CTFd.

Некоторые из основных моментов включают:

  • Приостановка соревнований
  • Автоматическая проверка обновлений
  • Ограничение скорости для чувствительных конечных точек

Во многих отношениях CTFd v1.1.0 является отладочной версией. В новой версии не так много новых функций, а многие плагины и темы не работают (намеренно). Однако в версии 1.1 реализованы давно необходимые исправления ошибок и усовершенствования, основанные на отзывах организаторов CTF и разработчиков плагинов.

CTFd прошел долгий путь с момента его использования в качестве частного проекта для CSAW CTF. Многое сделано, но еще многое предстоит сделать. Это новый год и совершенно новый стиль для CTFd. Только время покажет, что еще есть в магазине.

Как всегда, вы можете присоединиться к CTFd Slack, если вам нужна помощь в обновлении вашего экземпляра CTFd. Если у вас есть размещенный экземпляр CTFd, он уже обновлен до версии 1.1.