Skip to content

SgffCTF/DutyManager

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

35 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DutyManager | CTF Attack-Defense service

DutyManager представляет из себя простой сервис для CTF формата Attack-Defense, который содержит чекер совместимый с жюрейной системой ForcAD.

Оглавление

  1. Описание
  2. Бизнес логика
  3. Игровая логика
  4. Запуск
  5. Структура
  6. API
  7. База данных
  8. Чекер

Бизнес логика

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

В сервисе есть 3 роли:

  • Manager - прикрепляет обязанности к Worker'ам. alt text
  • Worker - читает обязанности, которые закрепили за ним Manager'ы. alt text
  • Admin - на беке ему доступны все CRUD права над всеми обязанностями. На фронте он может читать обязанности любого worker'а и смотреть созданные обязанности любого manager'а по их username. Является скрытой ролью. alt text

Основной флоу использования сервиса:

  1. Manager создаёт обязанность, указывая username worker'а, заголовок и описание.
  2. Worker заходит, читает обязанности и выполняет то, что там написано.

Игровая логика

Хранение флага подразумевается в описании к обязанности. Чекер проверяет аутентификацию, а также все CRUD операции над обязанностями.

Сервис содержит 3 уязвимости. Разбор уязвимостей и эксплойты можно посмотреть тут.

Запуск

docker compose up --build -d

Структура сервиса

Проект состоит из нескольких основных компонентов:

  • service/backend/: Реализация gRPC API для приложения.
  • service/webapp/: Веб-приложение для взаимодействия с пользователем.
  • service/deploy/: Файлы конфигурации докер контейнеров.

API

Контракты для gRPC API тут.

Само API содержит 2 сервиса:

  • SSO - сервис, отвечающий за авторизацию.
  • Duties - сервис, отвечающий за управление обязанностями.

SSO содержит три подсервиса: auth, permissions, user_info.

Для API были написаны некоторые тесты, включая тесты двух уязвимостей.

База данных

Для базы данных был написан мигратор, который компилируется при запуске контейнера backend и создаёт структуры базы данных.

Структура базы данных находится здесь.

Чекер

Чекер находится тут. Был протестирован на проверяющей системы ForcAD.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors