サークル合宿で主催したCTF(のようなもの)の解説
この記事は サークル合宿で主催したCTFの解説|nekomaru|noteの転載です。
幹事長(@progfay)、広報(@mayoneko)、自分(@nekomaru)の3人でCTF(という名目のオリエンテーション)を企画した。めちゃくちゃエモい概要記事は 合宿でCTFの主催をした記録|真夜猫|note。CTFの後にゴニョゴニョついているのはまさかりが怖いからです
この記事では自分が作成した問題を解説する。
A multipurpose toolkit (Misc:100)
問題
Get flag! 《callmenames.v4p》
解き方
環境がWindowsでかつ、vvvvがインストール済みの場合
callmenames.v4pをvvvvで実行する
- flagcolorの変数を変更する
- その他の環境
v4pはXMLファイルであるため、文字列抽出を試みる。
$ strings callmenames.v4p | grep octf{ <PIN pinname="Input String" visible="1" slicecount="1" values="octf{vvvv_is_not_virus}">
flag
octf{vvvv_is_not_virus}
感想
合宿1日目に後輩がvvvvを始めてみたいと言っていたのを小耳に挟んだので追加した。
How Tweet (Recon:50)
問題
Onsen-CTF has an official Twitter account. Find!
解き方
flag
感想
クライアントに気が付かず苦労する人がいる一方で、Crypto大魔王みたいな人とReconの神っぽい人がCTF開始前からアカウントを特定していたと聞いて戦慄した。
リプとかDM送りつけられたりパスワード変更申請出されたりして面白かった。
official Instagram (Recon:50)
問題
Onsen-CTF has an official Instagram account. Find!
解き方
How Tweetのクライアント名をクリックして紐付けられているURLにアクセスする。
flag
octf{y0u_are_greate_stalker}
感想
もはやエスパー(ごめんなさい)だけど全チーム解けていたのでちょっと引いた。"How Tweet" と合わせてTwitterAPIに興味を持ってくれるといいなという気持ちで制作した。結果としてはおまけ問題的な立ち位置になってしまった。泊まった旅館の名前でInstagramを検索している後輩を見かけて申し訳ない気持ちになった。
easy packet (network:100)
問題
Let's restore the site!《easy_packet.pcapng》
解き方
- pcapngファイルをWireSharkで開く。
- ファイル>オブジェクトをエクスポート>HTTPオブジェクトからファイルを保存する。
flag
octf{HTML_EXP0RT}
感想
先にI_input_the_flagを作ってからnetworkに易しい問題がなかったので作った。画像をbase64エンコードしてHTMLに埋め込んでみたらそこで苦戦している人がいて申し訳ない気持ちになった。これを期に勉強してください。
I_input_the_flag_1 (network:200)
問題
The answer is octf{*} . * = I_input_the_flag_1.pcapng's answer.
解き方
- pcapngファイルをWireSharkで開く。
protocol:USBからUSB通信のキャプチャだと推測。各パケットの差異からIRP_IDとLeftover Capture Dataに注目する。
IRP_IDは2種類、交互に入れ替わることから送信先と受信先を表している、Leftover Capture Dataは送受信しているデータであると推測。
I"input"the_flagとUSB通信からUSBキーボードの通信と推測。usb keyboard codeなどでググる。参考サイト
4のサイトと照らし合わせる(コードを書いたり、目で追ったりする)
flag
octf{mimorisuzuko}
感想
ctf4gの演習で習った問題。picoCTFの過去問にもある。何をしているのか理解すればググるだけでWriteUpを読める。最初は150点くらいにしようとしていた。
I_input_the_flag_2 (network:250)
問題
The answer is octf{*} . * = I_input_the_flag_2.pcapng's answer.
解き方
- 途中まではI_input_the_flag_1と同様。Leftover Capture Dataに注目し、解読する。
usbkeyboard
2.Leftover Capture Dataの画像赤枠部分が変化していることに注目。
usbkeyboardの太字部分にのみ入力されていることからShiftキーと推測。
flag
octf{USBKeyBoard}
感想
最初はI_input_the_flag_2だけだったが、Shiftキーなしで1問になると指摘されてI_input_the_flag_1ができた。実質450点問題。
nekomaru's Adventure (Extreme:800)
解き方
1-1.instabae.jpgのexif情報から撮影場所を抽出
1-2. lyric.jpgにstringsする
$ strings lyric.jpg JFIF 4ICC_PROFILE $appl mntrRGB XYZ ・・・ "fly high in the sky" this song by POSSIBILITY.
1-3. 1-2の内容をググるとsanagiという曲が出てくる。1-1の新宿周辺という情報と合わせて調べる。
1-4. サナギ 新宿に行っているときのツイートを探して答えると画像が与えられる
2-1. 配られた動画ファイルに埋め込まれているQRコードを重ねたりつなぎ合わせたりする
それぞれのQRコードからロッカーを特定する。
感想
広報がTwitterAdventureつくってて楽しそうだなーと思ったのでReconっぽい問題を作りたかった。
ゴリ押しでも解けるようにしようと解き方をいろいろ考えていたらものすごく簡単になった。(自分の問題が一番早く解かれた)