2019-04-08-公開 2019-04-11-更新
SwampCTF 2019 [*1] [*2] にチーム「Xplosion」 [*3] の1人として参加した。Xplosionは私とCTFに誘ってくれた友人kangetsu121さんの2人編成。CTF4戦目。
将来の振り返りのために取り組みをメモしておく [*4] 。
※取り組んだ問題は後にWrite Upを参考にしながら復習・追記する。
解けた問題
Welcome! [warm up, Misc]
- 問題のdescriptionにflagそのものが記載されている。flag提出の練習
Last Transmission [Misc]
- 友人が解いた
- 画像が与えられる
- 画像Steganography問題
- 画像Steganography参考:ステガノグラフィーの解析について
- 各色の8ビットの最後1ビットは0, 1どちらでも人の目には違いが分からないからその部分に情報を埋め込む、とは面白いこと考えるなと思った
- 画像Steganography参考:ステガノグラフィーの解析について
- 「うさみみハリケーン」という多機能汎用プロセスメモリエディタを活用する。その補助ツール、汎用ファイルアナライザ「青い空を見上げればいつもそこに白い猫」の「ステガノグラフィー解析」機能を使えば簡単に画像に埋め込まれたflagが見つかる。
"これらの機能により、たとえば、Linux環境におけるバイナリファイル解析の基本的アプローチとされる、「fileコマンド」、「stringsコマンド」、「xxdコマンド」・「hexdumpコマンド」、「Binwalk」および「Foremost」使用と同様の解析アプローチを、Windows上で簡単に行うことができます。"
Neo [Forensics]
- 友人が解いた
- 画像が与えられる
- 画像問題の入門編といった感じ
- stringsしてgrepしてflagを見つける
- モチーフが完全にマト○ックス [*5]
Leap of Faith [Forensics]
- 4戦目にしてようやくまともに貢献できた記念すべき問題
- 画像が与えられる
- さすがにstringsしてgrepしてもflagは見つからない
- これまた「うさみみハリケーン」の「青い空を見上げればいつもそこに白い猫」を活用。「ファイル・データ抽出」機能を使うとflag画像が見つかる
- 「内包ファイル・データ検索」欄の「算出サイズを無視して1バイト毎に検索」を有効化して検索実行する必要あり
- 物語はNeoの続き。モーフィアスまで出てきて完全にマト○ックス
本問題における試行錯誤の跡
- Forensics入門(CTF) - Qiitaを上から順に
exiftool
,strings
,binwalk
と試してみたがよく分からん… - インストールメモ
- exiftoolをインストール
sudo yum install -y perl-Image-ExifTool
- binwalkをインストール
wget https://github.com/devttys0/binwalk/archive/master.zip
unzip master.zip
cd binwalk-master
python setup.py install
- 動作確認
binwalk
- exiftoolをインストール
取り組んだ問題
NIT [Misc]
- 文字列が与えられる。このテキストから手がかりを得よ、とのこと
- 英数字と記号が入り乱れる意味不明な文字列。hexに直すなどしてみたが、分からず
復習
- 参考:CTFtime.org / SwampCTF 2019 / NIT / Writeup
- CyberChefを使ってデコード
- こんな便利なサイトがあるなんて。次のCTFで使う
The Cyber War Continues [Forensics]
- 英字文字列「dead_mans_message.txt」と7zファイル「secret_location.7z」が与えられる
- 7zファイルにはパスワードがかかっている
- txtファイルの英字文字列を解読して7zを解凍するのだろうか?
- 英字文字列ということで、単一換字暗号かと当たりをつけてquipqiup - cryptoquip and cryptogram solverに投げてみるも、意味の通る文章は得られず。quipqiupで復号できないようなもっと複雑な方法で暗号化されている?
復習
- ※解けたのが30チームのみだったからか、Write upが見つからない問題…(2019-04-08時点)
Ghidra Release [Misc]
- 15時間ほどのmp4ファイルが与えられる
- テキストが延々と流れる。おそらくNSAの「Ghidra」のマニュアル
- この中にflagがあるのだろうが、15時間も見ていられない。動画を画像化して文字を抽出・flag検索したかったが方法が分からず断念
復習
- 参考:CTFtime.org / SwampCTF 2019 / Ghidra Release / Writeup(シェルスクリプトでの解法)
- 参考:CTF_Writeups/README.md at master · AidanFray/CTF_Writeups · GitHub(Pythonでの解法)
- 参考:swamp ctf 2019 write-up - 魚脳の池(Pythonでの解法)
- 「FFmpeg」という動画・音声処理用のフリーソフトがあるらしく、1frameずつの切り出しにはffmpegを使用していた
- CentOSへのインストール参考:CentOS7にffmpegをyumインストール - Qiita
- 「Tesseract」というORCのOSSがあるらしく、画像->文字にはTesseract使用していた
- Pythonでの解法ではOpenCVと
pytesseract
や、PIL
とpyocr
を使用していた
- Pythonでの解法ではOpenCVと
- 「FFmpeg」という動画・音声処理用のフリーソフトがあるらしく、1frameずつの切り出しにはffmpegを使用していた
- 各ツールのインストール等詳細は本ページ下部を参照
We Three Keys [Crypt]
- ターミナル上で動くサービスにアクセスさせられる。Pythonのソースコードも提供される。何をどうやったらflagになるのだろうか…
- 暗号化・復号の挙動から何かを見出すのか…?
- ソースコードを見るとhex(16進数形式)でしか入力できないように見えたので、まずはテキストをhexに変換するための
xxd
をインストールsudo yum install vim-common
- インストール参考:webネタ
- 使い方参考:16 進数表示するコマンド (1) xxd - Linux 入門
- 使い方参考:バイナリデータの表示:xxd:Technical tips:Media hub
- …hexを入力してもエラー出るんですけど?断念
復習
DataVault [Web]
- パスワード入力フォームのあるWebサイトにログインしてflagを取得する問題と思われる
- Webフォームを見るとまずはSQLインジェクションが思い浮かぶが、これもそうなのか…?
- 初歩的なSQLインジェクションを試したがよく分からん…
復習
- 参考:CTFtime.org / SwampCTF 2019 / DataVault / Writeup
- POSTリクエストに手を加えてエラーを出させる
- ターミナルでのPOSTの方法:curlコマンドでGET/POSTをサクっと確認 - Qiita
- Write upではブラウザ上で実行している様子。どうやるんだろうか…
Heap Golf [Pwn]
- ターミナル上で動くサービスにアクセスさせられる
- 何をすればいいかさっぱり分からん…。Pwnの経験不足甚だしいと反省
復習
- 参考:https://github.com/tin-z/mY_Writ3_Up5/tree/master/SwampCTF-2019#heap-golf
- さっぱりわからん…。Pwnは地道に勉強していこう
順位
- 250位/782teams (上位32%)
学び
※2019-04-07には本CTFを含めて3つのCTFに同時参加した。全体的な感想は1つ目のCTFで。
画像問題
- Linux上での解析と視覚的な解析の両方を試すこと
- 画像が与えられたらまずは
file {file}
でファイルを確認 - 次に
strings
でバイナリから文字列を取得 strings {file} | grep {flag}
はよく使う- というか上の作業も「うさみみハリケーン」の「青い空を見上げればいつもそこに白い猫」でできる。すごい。すごすぎる
換字暗号文のデコードに便利なサイト
- quipqiup - cryptoquip and cryptogram solver
- 暗号化された文章をコピペするだけ
- 単一換字暗号の解読などに便利
- CSAW CTF 2015 Writeup - Tahoo!!で紹介されていた
様々なエンコード/デコードに便利なサイト
- CyberChef
- 文章をコピペし、変換方式を選んで変換を実行するだけ
- CTFtime.org / SwampCTF 2019 / NIT / Writeupで紹介されていた
動画の切り出しに便利なツール
- 「FFmpeg」という動画・音声処理用のフリーソフト
- Pythonを使うならOpenCVでも可
ORCに便利なOSS
- 「Tesseract」というORCのOSS
- Pythonを使う際、
PIL
,pyocr
を使用 pyocr
詳細:- World / OpenPaperwork / pyocr · GitLab
- PyOCRでTesseractを使う | テクノロジーで楽がしたい
Tesseract
のインストールも必要(GitHub - tesseract-ocr/tesseract: Tesseract Open Source OCR Engine (main repository))yum install tesseract
yum install tesseract-langpack-deu
PIL
はPillow
をpip install
する
- Pythonを使うなら
pytesseract
もある
雑感
※全体的な感想は1つ目のCTFで。
ツールに丸頼りだったとはいえ、1問解けてめっちゃ楽しくなった。
チームメイトにおんぶにだっこ状態から早く抜け出さねば。
コンテスト中の調査や復習で
- 画像問題
- 暗号文の復号
- 動画の切り出し
- ORC
など、各手法に適用できる強力なツールのノウハウを集められた。是非とも次回に活かしたい。
関連
同時参加CTFの1つ目 www.kokokocococo555.com
同時参加CTFの2つ目 www.kokokocococo555.com
同時参加CTFの3つ目
- SwampCTF 2019(本記事)