之前、ctfdのサンドボックスを構築しましたが、今度は GZCTF をインストールして、両者の違いを確認してみます。GZCTF のインストールには、公式ドキュメントで推奨されている docker + K8s の分離デプロイ方法を使用します。
ここでは、このプロジェクトを使用して自動化デプロイを行います。単一のdocker
またはdocker+k3s
のデプロイをサポートしています。
私はdocker+k3s
のデプロイ方法を使用しました。2 つの Ubuntu マシンを準備する必要があります。1 つは Docker をインストールし、もう 1 つは k3s をインストールします。
両方のマシンは Ubuntu 20.04 です。
k3s のインストール#
IP:192.168.31.171
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -
GZCTF プラットフォームのインストール#
Docker がインストールされているマシンにインストールします。IP アドレスは 192.168.31.254 です。
少し待って、デプロイが成功しました。
http://192.168.31.254:81 にアクセスし、アカウントとパスワードでログインします。
問題のテスト#
次の Docker サンドボックスを使用してテストします。
ctftraining/qwb_2019_supersqli:latest
左側の管理をクリックします。
中に入ると、新しい競技を作成するために、競技のタイトル名を入力します。
作成が完了したら、以下のようになります。
右側のアイコンをクリックして、次のページに移動します。
問題の管理をクリックして、新しい問題を作成します。
問題のタイプを選択できます。
動的コンテナを選択し、次のページに移動します。
コンテナイメージに注意し、テストコンテナを作成し、Docker イメージのアドレスを入力し、テストコンテナを作成します。以下の図のようになります。
問題を有効にします。
次に、問題にアクセスするために、チームを作成し、関連する人々をチームに追加する必要があります。
情報審査で、チームの登録を自動承認にすることができます。これにより、チームに参加するためには管理者の承認が必要になります。そうでなければ、管理者の同意が必要です。チームに参加していない人は問題にアクセスできません。
チームの管理をクリックすると、チームを作成したり、チームに参加したりすることができます。
チームに参加するには、他のメンバーが招待コードを送信する必要があります。
チームの作成をクリックします。
作成が完了したら、招待コードを生成できます。
ホームに戻り、競技に参加することができます。
上記の問題が表示される場合、競技の自動承認が有効になっていないことを意味します。管理者が審査を行う必要があります。
test アカウントでログインし直すと、競技に参加できるようになります。
競技に入ると、コンテナを作成した後、以下の図のようになります。
ここで提供される ws 接続は、tcp over ws プロキシモードが有効になっているためです。
アクセスするには、このクライアントをダウンロードする必要があります。
インストールが完了したら、ws 接続アドレスを入力します。
問題の IP とポートが表示されます。
その後、この接続を使用して問題にアクセスするには、このリンクを使用します:http://127.0.0.1:64143/
言語の切り替え#
参考#
https://github.com/XDSEC/WebSocketReflectorX/releases
https://docs.ctf.gzti.me/zh
https://github.com/GZTimeWalker/GZCTF
https://github.com/MoRan23/GZCTF-Auto
カバー画像はこちらから:
https://wallhaven.cc/w/kx5v57