jtwp470’s blog

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

TDUCTF 2014 Satellite in ConoHa 参加記 & Writeup

去る3月29日にTDUCTF 2014 Satellite in ConoHaに行ってきました.

大学に入学当初はCTFに全く興味を持っていませんでしたがSECCON CTF 2014 online 予選をやってみて結構面白かったのと大学の授業で秋からアセンブラをやったのもありせっかくだし初心者向けということなので突撃です.

以下に解けた問題を列挙していきますが問題名を忘れているwww

Trip Picture

開くとラブライバーらしい画像が出てきます.見ても特にFLAGらしきものはない.なので何も考えずにhexdump -Cすると以下のような感じでFLAGが得られる. f:id:jtwp470:20150331182012p:plain

もちろんstringsコマンドでもよい.

読めない文字1

最初まじで読めなかった.見た感じbase64だけど1回デコードしても駄目だしなんだよ~と思ってIPython上でバチバチキーボード叩いてたらFLAGが! 単純に2回base64エンコードされているだけだった.

ASCII ART

flag.zipが渡される.fileコマンドに通すときちんとzipファイルと出てくる割に展開できない.これは死んだかと思ったがTrip Pictureのときのようにとりあえずバイナリ読むかと思ったらアスキーアートでFLAGが書かれていた.頭を横にしてFLAGを読んでいたのは秘密な. f:id:jtwp470:20150331182630p:plain

Unknown File (でしたっけ?)

タイトル忘れました.糞長い名前のファイル3B14EA88FCDB58239928D829DD5182E23D866255がありました.とりあえずfileコマンドで見てみるとASCII Textとか出てきたので普段はEmacs使いですがこういうときはなぜかVimを使って開いたらFLAGが得られます.ちなみにEmacsではちょっと頑張らないと見られない.兎にも角にもファイルを開けば何とかなる問題でした.

Broken data

UEsDBBQAAAAIAG6feUZPi12UJwAAACUAAAAIAAAAZmxhZy50eHQLcQmtNjczcDY2dbQwcDE3tXAzMDZyMTBydjNxcTI0cjF2NTWtBQBQSwECHwAUAAEACABun3lGT4tdlCcAAAAlAAAACAAkAAAAAAAAACAAAAAAAAAAZmxhZy50eHQKACAAAAAAAAEAGADHOOjD6mbQAasYVU7pZtABqxhVTulm0AFQSwUGAAAAAAEAAQBaAAAATQAAAAAA

こんな文字列が与えられる.そして1ビット欠けているらしい.見た感じbase64かなともおもったけどとりあえず最初の5文字位をググる. するとbase64化されたZIPファイルらしいことがわかる.更に調べてみると末尾に=が付いているのでこれが欠けた1ビットかなと思いとりあえず付けてbase64デコードしてファイルに書き出す.とりあえずPythonで書いた.

#!/usr/bin/env python3
import codecs

data = "UEsDBBQAAAAIAG6feUZPi12UJwAAACUAAAAIAAAAZmxhZy50eHQLcQmtNjczcDY2dbQwcDE3tXAzMDZyMTBydjNxcTI0cjF2NTWtBQBQSwECHwAUAAEACABun3lGT4tdlCcAAAAlAAAACAAkAAAAAAAAACAAAAAAAAAAZmxhZy50eHQKACAAAAAAAAEAGADHOOjD6mbQAasYVU7pZtABqxhVTulm0AFQSwUGAAAAAAEAAQBaAAAATQAAAAAA"

data += "="

b = codecs.decode(data.encode(), "base64")

with open("broken_data.zip", "wb") as f:
    f.write(b)

生み出されたzipデータは普通にunzipすると鍵がかかっていて辛い感じになっている.

しかしOSX標準の展開ソフトだとすんなり展開できてしまい,flag.txtを読めば良い.

競技終了後,まさか私が指されてしまい解説することになりましたがこんな感じで解きました.あと俺はOSX持ってないから鍵かかったzip展開できないやーんって言う人にはzip -FF broken.zip --out fix.zipのようにzipコマンドのFFオプションでうまいこと直してもらえば展開できるようにまりますよ.

あと作問者曰くバイナリ内にZIPにパスワードがかかっているかどうかのフラグがあるらしく,それが破損していたらしいのだがよくわからなかったので精進する必要がまだまだありそうです.

Question

名前こんなのでしたっけ.とりあえずはZIPファイルでどっかのおっさん(Steve_ballmer_2007_outdoors2.jpg)とflag.txtが入っている問題があった.この瞬間にこりゃpkcrack使う問題だろjkとなり入っているおっさんをぐぐり写真をWikipediaから持ってきてpkcrackにかければ終わり.朝飯前だった.

柚子胡椒 vol.1

pcapファイルなのでとりあえずWiresharkで開く.するとどうもBluetooth通信を見ているらしい.初心者向けの割にいきなりBluetoothはいかがなものかともおもったけどPINを見つけろとのことなので追っていけばPINのやりとりが見つかりFLAGも見つかる.

string_compare

IDAにつっこめば分かる.読んでいると入力文字と何かをstrcmpで比較し合っていればFLAGを間違っているとInvalid keyと吐くもののようだ.しかし適当に読んでいるとMinamiKotoriの文字が.これとTDU{%s_is_very_cutie}をつなげたものを吐くのかなと思いFLAGとしてみたら合ってた.

我が同胞に告ぐ

最初はまったくわからなかった.フォレンジックと言われてもと言う感じだったが途中で運営側から「宗派が別れますねー」みたいな発言が... その瞬間こりゃVimか!と思い,Vimを立ち上げやってみればやっぱりそうだった.過去にもこのような問題が出たらしいが私は知らなかったので非常に面白い問題でした.

ちなみに私はEmacerなので終わった瞬間にVimをそっと落としました.

Mini Quiz #1, #2

ノリと感

解けなかった問題

type.log.gzの問題

strings使えばなんとかなったんですね

SQLi

SQLインジェクション能力を磨きたい.そもそもSQLインジェクション知ったのがpreだったのが全ての元凶

Evidence

Macフォレンジックツールであるautopsy入れていたのにインストールするのめんどいしとか言って忌避してたら時間が終わったw

autopsy使うとすぐ解けるね.

ゆゆ式

つらい

総評

なんだかんだといって順位は1330点で8位でしたが怖い人達はみんなマイナスのFLAGを入れていたみたいなので10位くらい下がるのかな.

少なくともSQLとかPHPとかWEB問題が1問も解けず泣きを見ることになったのでそこら辺の知識をもっと入れていきたいなと思いましたまる

もともとWindowsを用意してねって書いてあってLinux, Macユーザーである私からすると非常に辛いものがあり競技開始30分くらいまではWindowsを使っていたんですが何も整備していないWindowsが糞すぎて何もできず死にました.そこでMacを起動したら本当に捗りました.やっぱりなれた環境でやるのが一番です(MBAメモリがないのでWindowsは仮想環境ではなくBootcampで起動していた)

あと途中でごちうさ流れたときはめっちゃテンションあがりました.本当に有難うございます.

元気の源

f:id:jtwp470:20150331225400j:plain