はじめに

GZ::CTF は ASP.NET Core を基づいたオープンソース CTF プラットフォームで、コンテナバックエンドとして Docker または K8s を使用し、カスタマイズ可能なチャレンジ、動的コンテナ、および動的スコアリングを提供します。

このプロジェクトは、CTFd の実装は洗練されておらず、動的なコンテナ構成にはプラグインの使用が必要で、UI の見た目も良くないという欠点があって、それらを改善して、大会の開催をよりうまくできるために開発を始まりました。

GZ::CTF は AGPLv3 契約に基づいたオープンソースであり、その使用と変更はオープンソース契約に準拠する必要があります。 導入を開始するには、クイックスタートを参照してください。

WARNING

アップグレードと移行に関する注意事項:

  1. プラットフォームをアップグレードするには、最新のイメージを取得して再起動するだけで、データベースの移行が自動的に行われます。
  2. 一般的に、ダウングレード 操作はサポートされていません。時間スパンが大きいバージョンのアップグレードは、データの非互換性を引き起こす可能性があるため、データのバックアップを取ることをお勧めします
  3. アップグレード後、新しい構成項目やファイル構造の変更がある場合があります。公式ドキュメントやコミュニティに相談することをお勧めします。
  4. 別のブランチプロジェクトに移行する場合は、データベース構造が変更されていないかどうかに注意してください。変更後のデータベースは元のバージョンにロールバックできません
  5. コミュニティと公式メンテナーは、データの損失、データの非互換性、その他の問題について責任を負いません。ブランチプロジェクトの問題については、対応するプロジェクトメンテナーに連絡してください。

機能 🛠️

  • 高度カスタマイズ可能なチャレンジを作れる

    • チャレンジ種類:静的アタッチメント、動的アタッチメント、静的コンテイナー、動的コンテイナー

      • 静的アタッチメント:アタッチメントは共有され、追加されたフラッグのどれも提出可能となります。
      • 動的アタッチメント:チーム数に応じたフラッグやアタッチメントが少なくとも必要となり、チームに応じてアタッチメントやフラッグが配布されます。
      • 静的コンテイナー:コンテナーのテンプレートは共有され、フラッグは発行されず、追加されたフラッグのどれも提出可能となります。
      • 動的コンテイナー:フラッグは自動的に生成され、コンテナ環境変数を通じて配布され、各チームのフラッグは一意です。
    • 動的スコアリング

      • スコアリングカーヴ:

        f(S,r,d,x)=S×[r+(1r)×exp(1xd)]f(S, r, d, x) = \left \lfloor S \times \left[r + ( 1- r) \times \exp\left( \dfrac{1 - x}{d} \right) \right] \right \rfloor

        このうち、 SS はオリジナルスコア、 rr は最低スコア率、 dd は難易度係数、 xx は提出数です。 最初の 3 つのパラメータは、ほとんどの動的なスコア要件を達成するためにカスタマイズできます。

      • ボーナス: プラットフォームは、ファーストブラッド、セカンドブラッドとサードブラッドに対して、それぞれポイントの 5%、3%、および 1% をボーナスとして与えます。

    • チャレンジはゲーム中に有効または無効にすることができ、複数回公開もできます。

    • 動的フラッグのチャレンジに対する不正検出機能、オプションのフラッグテンプレートとリートフラッグ機能

  • 組織ごとにグループされたチームのスコアタイムライン、組織順位表

  • Docker または K8S に基づいた動的なコンテナの分散、管理、および複数のポート マッピング方法のサポート

  • SignalR に基づいたリアルタイムゲーム通知、ゲームイベントとフラッグ送信とログの監視

  • SMTPメール検証機能、Google ReCaptchav3による悪意のある登録防止

  • ユーザーのブロックおよび権限管理

  • オプションのチームレビュー、招待コード、登録メール制限

  • プラットフォーム内での記事の収集、レビューとバッチダウンロード

  • ランキングのダウンロードおよびエクスポート、すべての提出もダウンロードできます

  • ゲーム中の審判監視、提出とメインイベントのログ

  • チャレンジに対するトラフィック TCP over WebSocket プロキシ転送、トラフィック キャプチャの設定ができます

  • Redis ベースのクラスター キャッシュ、PGSQL をデータベースとして使用

  • Prometheus / OpenTelemetry に基づくデータトラッキングとモニタリング

  • グローバル設定でプラットフォームタイトルと他の情報を設定可能

  • その他...

Stars ✨

Stargazers over time

Grafana 📊

grafana.webp

Demo 🗿

index.webp

game.challenges.webp

game.scoreboard.webp

admin.settings.webp

admin.challenges.webp

admin.challenge.info.webp

admin.challenge.flags.webp

admin.game.info.webp

admin.game.review.webp

admin.teams.webp

admin.instances.webp

monitor.game.events.webp

monitor.game.submissions.webp