【write-up】TAMUctf 2019 write-up

 

お久しぶりです。あれこれしてる間に2018年はとっくの昔に終わってしまいました。

このwriteupを起爆剤として(Twitterも始めたことなので)、どんどんブログを更新していきたいと思いますぅ。

さて、2/22~3/3まで開催されていたTAMUctf2019に個人で「バイナリ大好きbot」として参戦してきました。結果は以下の通りです。

f:id:yamanobori_programing:20190304131614p:plain

f:id:yamanobori_programing:20190304131757p:plain

うーん、バイナリアンとしての人権が某国レベル...☎

f:id:yamanobori_programing:20190304132127p:plain

さて、では一問づつ解説(っぽいことを)していきたいと思う。Flagが明記されていないところは中の人がFlagを忘れてしまったところです。どうかご勘弁を...

Misc

Howdy!

f:id:yamanobori_programing:20190304133047p:plain

これは言うまでもないですな、

Flag : gigem{H0wdy!}

Who am I?/Who do I trust?/Where am I?

これは3つまとめて解きます。そのために、以下のサイトを使います。

www.aguse.jp

このサイトに、与えられたURLを投げてあげると、IPアドレス、サーバー証明者、サーバーの位置情報などありとあらゆる情報が出てくるので必要な情報を選択して回答欄に投げてあげると点を得る事が出来る。ただし、このページはgooglemapが正しく読み込まれていないためか、正しい位置情報が出てこないので、他のサイトを使う。

www.wellhat.co.jp

このサイトに、さっきのサイトで取得したIPアドレスを投げてあげると、正しい位置情報がでてくる。

(Flag : Boardman だった気がする...)

Hello World

cppのソースが配布されているのでそれを見てみると、ソースに到達するまでにスペースとタブで構成された謎の空白地帯がある。この、スペースを0、タブを1に変換してみると、10bit以下の数が出現する。

f:id:yamanobori_programing:20190304142547p:plain

これを文字列に変換するとFlagを得る。

Flag : gigem{0h_my_wh4t_sp4cing_y0u_h4v3}

Crypto

-.-

flag.txtというファイルが渡され、dah,di,ditで構成された文字列が書いてある調べてみるとモールス信号のようである。dahを"-"、di,ditを"."に変換してモールス符号変換器に投げる。

f:id:yamanobori_programing:20190304144515p:plain

16進数が現れた。これを文字列に変換してみる。

f:id:yamanobori_programing:20190304144619p:plain

Flag : gigem{C1icK_cl1CK-y0u_h4v3_m4I1}

MicroServices

0_intrusion

pcapファイルが渡され、攻撃者のIPアドレスを特定するように言われる。とりあえずWiresharkで開いてみる。

f:id:yamanobori_programing:20190304151231p:plain

攻撃者はきっと(他の通信と比較して)異常な量のパケットを送り付けているに違いないと推測し、候補をピックアップする。案の定候補のうちの一つがFlagだった。

Reversing

Cheesy

問題を開くとelfフォーマットのファイルが渡されるとりあえずstringsコマンドを実行すると、明らかにBase64エンコードされた文字列が現れる。デコーダーに投げるとFlagが出力される。

f:id:yamanobori_programing:20190304152742p:plain

Flag : gigem{3a5y_R3v3r51N6}

Snakes over cheese

問題を開くと.pycのファイルが渡される。実行すると適当な文字列を投げたときに時刻が帰ってくるようになっていたはず。(なぜか急に実行できなくなってしまったので確かめようがなくなってしまった)実は.pycのファイルはデコンパイラ(uncompyle6)が存在するのでデコンパイルしてみる。(.pyのファイルと異なり、.pycのファイルはそのままではソースを見る事が出来ない)

f:id:yamanobori_programing:20190304153939p:plain

どうやらHlagはFqaa[]に格納されているようである。例のごく文字列に変換する。

f:id:yamanobori_programing:20190304154503p:plain

Flag : flag{decompile}

042

問題を開くと.sファイルが渡される。.sファイルが渡されると.oファイルを生成したのちに実行ファイルを生成したいと思うのがバイナリアンの本能である。よってこの.sファイルを使って実行ファイルを生成していく。(実はそんなことをしなくとも.sファイルにFlagが書かれているのだがそんなことにはまだ気づいていない。)

f:id:yamanobori_programing:20190304162152p:plain

アセンブラを通して.oファイルを生成しようとするとエラーが生じるので以下のサイトを参考にして書き換えを行う。

www.super-computing.org

unknown hogeの行はとりあえずコメントアウトしてみた。

f:id:yamanobori_programing:20190304162442p:plain

アセンブラは通過したがコンパイラを通過できない。諦めてobjdumpに.oファイルを投げて眺めてみる。

f:id:yamanobori_programing:20190304162900p:plain

文字列に変換し、問題ページに投げてみたら通ってしまった。

Flag : gigem{A553Mb1Y}

※最初に渡された.sのファイルはAT&T記法なので慣れてないと多少分かりずらいかもしれないが同様の記述があり、読者の演習問題とする。(数学書

 

今日はこの辺にしておこうと思います。(次があれば)多分次の記事は解けなかった問題の復習になると思います。

あと、Twitterを始めたのでよかったらフォローお願いします。

twitter.com