ksnctf C92を解いてみた。
オンラインCTFのなかでも有名な「ksnctf」のC92スピンオフです。受験や大会を控えており、手っ取り早くチュートリアルと1問だけ解いたのでWrite-upを載せておきます。(初心者なので間違いなどあればご指摘お願いします。)
https://ksnctfc92.sweetduet.info/
問題ページに画像が載せてありますが、トップページに「各問題の画像と問題の内容はあまり関係がありません。画像が無くても問題は解けます」と書いてある通り、関係ありません。
GATE → 6473
SELF → 531F
DEFENCE → D3F3NC3
FORCES → F0RC35
FLAG{WELCOME_TO_KSNCTF_C92} → FLAG{?????????????????????}
見たところ、単一変字式暗号のようです。上4行を見ると
G = 6, A = 4, T = 7, E = 3, S = 5, L = 1, O = 0
ということが分かります。ということで、FLAG{WELCOME_TO_KSNCTF_C92}をこの規則に則って変換してみます。
変換すると FLAG{W31C0M3_70_K5NC7F_C92} となります。
E1 - Mysterious Light 10点 ジャンル QR
問題ページにflag1.png(図1)という画像が載せてあります。
図1 flag1.png
画像はQRコード(29x29)のようです。しかし、QRコードの一部は深夜アニメに出てくるような謎の白い光が重なって隠れています。儚い可能性にかけて、スマートフォンのQRコードリーダで読み取りを試みますが...案の定読み取れません。
困ったときはGoogle先生に頼ります。とりあえず「QRコード 復号」などのキーワードを突っ込んでググってみると、「strong-qr-decoder」というツールの情報が出てきました。これを使えばFLAGを取得出来そうです。strong-qr-decoderをGitHubからダウンロードしてREADME.mdを開きます。どうやらQRコードの明暗(描かれていない部分と描かれている部分)を.txt形式にして入力するみたいです。再度問題のQRコードを見ながら、入力用の.txtファイル(図2)を作成します。明部は-。暗部はX。不明な部分(今回は謎の光が重なって隠れている部分)は?です。
図2 入力用.txtファイル
.txtファイルを作ったら、terminalで以下のコマンドを実行し、FLAGを出力します。(図3)
python sqrd.py -e 2 入力用ファイル名
図3 FLAG出力
無事にFLAGが出力されました。
ちなみにですが、このstrong-qr-decoderはPython2で作られているらしく、Python3のみインストールしたFedoraでは動きませんでした。
今回初めてWrite-upまで書いてみましたが、やはり解説する立場は難しいです。今後も機会があればWrite-upを書いていきます。