CTF問題をホスティングした

見習いをしてるCTFチームm1z0r3_NSLにて、m1z0r3CTF(身内CTF)があった。
せっかくなので、その時作った問題を自サーバにホスティングした。

問題はここ→http://ctf.ryotosaito.comのSPA。

制作の目安レベルは「頑張れば初心者でも解ける問題」。
そうはいっても8時間もあるCTFなのでどれだけ複雑にするかの調整が難しかった…

DB構成とUIは班員にお願いし、自分はサーバサイドとSPAスクリプト、それからサーバデプロイを担当した。

当日は3班対抗で行い、所属しない2班中1班にフラグを取られた。割と速攻だった…笑

 


 

後日談:

m1z0r3CTFの問題サーバとスコアサーバはあらかじめ用意されていたので、実行環境パッケージだけをインストールしてデプロイすればOKだったので、そんなに難しくはなかった。

今回自分のサーバに改めてホスティングしようとした時に

  • スコアサーバを作る
  • SQLインジェクションされても問題ないようにmysqlインスタンスを分割する

必要があった。

スコアサーバは全力で作れって話でしたね(白目)。

DBインスタンスの分割は以下の手順でできた。

my.cnfに以下の記述を追加

[mysqld@2017.m1z0r3.ctf]
datadir=/var/lib/mysql.2017.m1z0r3.ctf
socket=/var/lib/mysql.2017.m1z0r3.ctf/mysql.sock
log-error=/var/log/mysqld.2017.m1z0r3.ctf.log
pid-file=/var/run/mysqld/mysqld.2017.m1z0r3.ctf.pid
skip-networking

以下コマンドを実行

# systemctl start mysqld@2017.m1z0r3.ctf
# systemctl enable mysqld@2017.m1z0r3.ctf

PDOコンストラクト時のDSNは

mysql:unix_socket=/var/lib/mysql.2017.m1z0r3.ctf/mysql.sock;dbname=hoge;

これでインジェクションされても本当に大事なデータが見られないよ!やったね!

カテゴリー CTF

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です