ASIS CTF Finals 2015 writeup
先日のASIS CTF Finals 2015に参加したので、解いた問題のwriteupです.
What's example flag (Trivia 1pts)
ExampleなFlagを答えたら,見事に弾かれました.
またまた~と思いましたが何度やっても通らないので半ば諦めてました.
ダメ元でExample Flag内の16進数をバイナリエディタに打つとURLが.
指示されたURLに飛ぶとFlagがありました.
Big Lie (Forensic 100pts)
pcapファイルを渡されます。
NetworkMinerで開いてみると,Pastebinのサービスを利用している通信でした.
このサービスは,キーを含めたURLでアクセスすると復号されて内容を見れるようになる仕組みのようです.
キーを含んだURLがいくつかあったのでそれぞれ試して見たところ,ひとつが正解のフラッグ(のAA)でした.
Strange (Forensic 150pts)
サイズが大きすぎてプレビューできないpngが渡されます.
縦横それぞれ344987ピクセルとのこと.
バイナリエディタで見ると.データ部のほとんどがゼロでしたが,中盤にゼロ以外のデータがほんの少しありました.
そこで,その部分を切り出して,間に挟まった長いゼロの連続を消し,ヘッダの縦横サイズをプレビューできるくらいに縮めてあげたところ(手動),なんとなく意味ありげな模様が出てきました.
それぞれの行の長さが同じだったのでmspaintでちまちまとくっつけてあげるとフラッグになりました.
Calm down (Trivia 75pts)
28万にも及ぶフラッグのような文字列が書かれたファイルが渡されます.
拡張子は.txtなのに開くとバイナリと認識されるのでとりあえずバイナリエディタに投げます.
すると一見Flagのように見える文字列にはヌル文字が含まれているではありませんか.
なら,ヌル文字がないのがFlagでは?と考え,以下のphpを書きました.
<?php $fp = fopen('flagBag.txt', 'r'); $count = 0; if ($fp){ if (flock($fp, LOCK_SH)){ while (!feof($fp)) { $count++; $buffer = str_replace("\0", "", fgets($fp)); if(strlen($buffer) !== 39){ print($buffer); print($count); } } flock($fp, LOCK_UN); } } fclose($fp); ?>
しかし,どうも何か間違ったようで
上のコードではFlagがひとつ出力されるのですが,それは正解ではありませんでした.
出力されたFlagの一つ前の行に書かれていたのが正解のフラッグでした.