jtwp470’s blog

日記とかプヨグヤミングとか

Sharif CTF 2016 Writeup

こんにちは.たんごです. もう大学も3年が終わりますがまだ実験のレポートが進んでいませんw とりあえずやらないといけないことが多いなか, Sharif CTFが行われていたのでチームg0tiu5aのメンバーとして参加しました.250ptで248位でした(糞雑魚)

以下は解けた問題のWriteupと解けなかったけど他人のWriteup読んで実際にやってみた記録です.

解けた問題

Rail Fence Cipher (Crypto)

名前でググるRail Fence Cipherにあるように既知の暗号方式であることがわかりました. そこで適当にPythonのソルバーなどを検索して出てきたコードに暗号文を投下して適当に回しました.

key = 21でした.

Kick Tort Teen (Forensics)

Excel形式のファイルが出てきます.WindowsExcelなどで開くとExcel VBAマクロがあることがわかるので実行してみるが特に変化はなし.そこでコードを読むとどうやらfileXYZ.dataとかいうファイルを生成しているみたい.

$ file fileXYZ.data
fileXYZ.data: ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), statically linked, stripped

あとはこれを実行してみるとフラグが得られます.

Dumped (Forensics)

やるだけ問.strings RunMe.DMP | grep Sharif

dMd (Reverse)

何故か電車の中でRevした問題.フラグの元となる値はバイナリに直書きされています. GDBで動かしながらアセンブラコードを読んでいると以下の様な動作であることが分かりました.

  1. ユーザーから入力を受け取る
  2. ユーザーの入力値をMD5に変換する
  3. そのまま書かれているMD5値とユーザーの入力値をMD5化したものを比較して正しければThe key is valid! みたいな感じでおしまい.

中に書かれているMD5値は780438d5b6e29db0898bc4f0225935c0でした.これに対応する値はMD5(MD5(grape))ということを検索して知りましたのでその値がフラグでした.

解けなかったけど他人のWriteup読んで理解した問題

Sec-Coding 1 (Misc)

C++で書かれたコードにある脆弱性とかを潰せみたいな問題.提出サーバーにアクセス集中していたのか全然アクセスできなかったのが非常に辛かったです. ずっとvector charの大きさが0のときが未定義動作らしいのでその脆弱性を潰したかったのですがどうやっても潰れずに諦めました.

競技終了後, 別にvector char使う必要なくね?と思いStringにして提出したところ通ったのが辛いです.

We lost the Fashion Flag! (Forensics)

解凍するとtar.gzとfashion.modelというファイルが得られました.tar.gzを展開してもわけわからんファイルが10000くらいでてきて謎いです.結局どうすれば解けるのかわからず終わってしまいました.

他の人のWriteupを読みながら進めているとどうやらfashion.modelはfzipというもので圧縮されているらしいですね.

 $ hexdump -C fashion.model| head -2
00000000  08 00 00 00 46 65 6d 74  6f 5a 69 70 00 00 00 00  |....FemtoZip....|
00000010  00 00 01 00 34 7d 27 2c  20 27 63 74 66 27 3a 20  |....4}', 'ctf': |

なんじゃそりゃ~って感じですが適当にググります. https://github.com/gtoubassi/femtozipっぽいので使ってみる.

あとは10000くらいあるファイルがテキスト化されるのでgrepして出てきたフラグを提出すれば良いらしい.

 $  grep "forensic" out/* | grep 2016 | grep "'points': 100"
11180:{'category': 'forensic', 'author': 'staff_3', 'challenge': 'Fashion', 'flag': 'SharifCTF{2b9cb0a67a536ff9f455de0bd729cf57}', 'ctf': 'Shairf CTF', 'points': 100, 'year': 2016}
11223:{'category': 'forensic', 'author': 'staff_5', 'challenge': 'Fashion', 'flag': 'SharifCTF{41160e78ad2413765021729165991b54}', 'ctf': 'Shairf CTF', 'points': 100, 'year': 2016}
11908:{'category': 'forensic', 'author': 'staff_2', 'challenge': 'Fashion', 'flag': 'SharifCTF{8725330d5ffde9a7f452662365a042be}', 'ctf': 'Shairf CTF', 'points': 100, 'year': 2016}
273:{'category': 'forensic', 'author': 'staff_3', 'challenge': 'Fashion', 'flag': 'SharifCTF{1bc898076c940784eb329d9cd1082a6d}', 'ctf': 'Shairf CTF', 'points': 100, 'year': 2016}
9401:{'category': 'forensic', 'author': 'staff_6', 'challenge': 'Fashion', 'flag': 'SharifCTF{c19285fd5d56c13b169857d863a1b437}', 'ctf': 'Shairf CTF', 'points': 100, 'year': 2016}

Flag: 2b9cb0a67a536ff9f455de0bd729cf57

ググる力が大切だなと思う問題でした.

uagent (Forensics)

pcapファイルをWireSharkで開くとZIPファイルを大量に分割してダウンロードしていることがわかりました. 最初はIPアドレスが実際に存在するようなのでアクセスしてダウンロードを試みましたが結局できず,次にpcapに含まれるZIPの分割ファイル郡をWiresharkの機能を用いて取り出し, 適当にシェルスクリプトを書いてファイルをくっつける作業をしましたが出来たファイルが壊れていて解凍できなかったりそのファイルを直して解凍できるようにしても今度はそのZIPファイルのパスワードがわからず終了してしまいました.

競技終了後Writeupを読んでみると SharifCTF 2016 Uagent (Forensics 100) Writeup · xil.se のような解き方があったようです.Scapyは便利なようですね.私も実際にWriteupを見ながらコードを書きました.

雰囲気から察するにHTTP 206でダウンロードされるのがZIPファイル, User-Agentにあるsctf-app/[base64]/の部分がそのZIPファイルの鍵となっていたようです. 次からネットワーク問を解くときにはWiresharkだけでなくScapyも使ってみることが重要だなと学ぶことが出来た問題でした.

Network Forensics (Forensics)

パケットをざっと見てWifiのパスワードを何とかしてゲットしてデコードしてうまいことやるのかな?と思っていましたがパスワードをどうやって取るのかわかりませんでした.

rom-0というファイルは得ていましたがそれをどう使うのかも謎でWriteupを読んで実際にWPAのパスワードを得るとこれこそハッキングだーという感じがしました.

良いWriteup: opcode.ninja

以下はTODO. 書くよ

PhotoBlog (Web)

hackme (Web)

Asian Cheetah (Misc)

Android App (Reverse)

Serial (Reverse)

SRM (Reverse)

感想

個人的には2016年が始まって参加したOnline CTFのうち前2つのCTFがフラグ形式が不明でRecon問題すぎたのが辛かったので今回のCTFは非常に解きやすかったという印象が強かったです.しかしスコアサーバーが雑魚いのかよくアクセスできなくなったり文字入力にいちいちCAPTCHAを入れてくるのはうざかったかなあ. チーム目標として100 team以上解けている問題は解けるようにしたいですし, Pwn問題に1問も手を出せなかったのでPwn修行したいですし, きちんと時間をかけて取り組みたいなぁという気持ちです. まだまだ雑魚雑魚ですがこれからも暇を見ながらいろんなCTFに参加したいです.

最後に

このCTFのやっている間僕は大学の友人と大洗に行ってアンコウ鍋をおいしくいただき更にはガルパン聖地巡礼的なことをしていました.ガルパンはいいぞ!

f:id:jtwp470:20160207205741j:plain

アンコウ鍋 美味しかった.

f:id:jtwp470:20160207205749j:plain

〆の雑炊.天国にも登るようなうまさ

f:id:jtwp470:20160207205752j:plain

大洗磯前神社.痛絵馬がめっちゃいっぱいありました.海が綺麗

f:id:jtwp470:20160207205758j:plain

大洗マリンタワー.