net-nyan-cat

俺たちがインフラ野郎Aチーム

UUTCTF2019 - writeup

結果は441チーム中116位でした。
ソロだからという言い訳はなしにして、次は100位以内を目指します。

Reverse - Find The Password

実行するとこんな感じの画面が出ます。 passwordを探します。 f:id:xrzhev:20190429150312p:plain
デバッガにかけてもおそらく問題ないと思いますが、
今回はdnSpyを使いました。(.Netで作成されていたので) github.com

では、ロジックを解析していきます。
以下の画面でほぼすべてのロジックが確認できました。
入力されたパスワードのMD5ハッシュが"d1e48b836b862e8e7cf834b895ffc0de"であれば、フラグとなるようです。(22行目)
f:id:xrzhev:20190429151810p:plain

しかし、インターネット上のMD5逆変換サービスを使っても、ハッシュ化前の値を得ることはできませんでした。
そこで、ヒントが隠されていないか調べると、フォームのinitialize時に興味深い値を展開していました。 f:id:xrzhev:20190429152513p:plain
起動時の画面サイズでは絶対表示されない座標に"123456UUTctf"と表示されるようにされていました。
確認します。
f:id:xrzhev:20190429152702p:plain
確かに表示されています。
"123456UUTctf"のMD5ハッシュを調べると、最初に突合していた"d1e48b836b862e8e7cf834b895ffc0de"であることがわかり、
入力するとフラグゲットです。 f:id:xrzhev:20190429152848p:plain
SHA1()内の値をSHA1でハッシュ化してフラグになります。
ちなみに、dnSpyで、フラグの画像を抽出することだってできます。
めちゃ便利。
f:id:xrzhev:20190429153142p:plain


Reverse - The Puzzle

実行するとこんな感じの画面が出ます。
f:id:xrzhev:20190429153517p:plain
よくあるスライドパズルですね。
パズルを気合で解いてもいいかもしれませんが、今回もdnSpyを使ってズルします。
メインロジックを確認します。
f:id:xrzhev:20190429154023p:plain
見た感じ、パズルをクリアした後に画像を切り替えてシャッフル、再度プレイさせられるようです。地獄かな?
切り替わる画像をチェックします。
f:id:xrzhev:20190429154501p:plain
どうやら、フラグのヒントが入ってそうなQRコードになるようです。

スライドパズルでのリソースは左上から順に、

1 2 3  
4 5 6  
7 8 9

となるので、順に画像を結合していきますと、こんなQRコードが出来上がります。
f:id:xrzhev:20190429154629j:plain
QRコードの中身は、 VVVUQ1RGe21kNShJX2wwVjNfcEw0eTFOZ19QdVp6MWVTKX0=
となっていました。末尾が=でパディングされていたので、base64でデコードすると、フラグゲット。
UUTCTF{md5(I_l0V3_pL4y1Ng_PuZz1eS)}
md5()内の値をmd5でハッシュ化してフラグになります。


Web - Bad JS

HTMLファイルとJSファイルが渡されます。
JSはクッソ難読化されています。
f:id:xrzhev:20190429155952p:plain
f:id:xrzhev:20190429160110p:plain
また、HTML中のClick ME to Check The FLAG!はただのWrong!というアラートがでるだけで、とくにはjsが走ったりということはないです。
jsファイルの中に_0x1b00という配列があり、その中にbase64でたくさんの要素が格納されていました。
f:id:xrzhev:20190430173545p:plain
デコードして確認してみます。
f:id:xrzhev:20190430173818p:plain

Flag is: MD5(127.0.0.1) という文字列が見えます。
いささか簡単に見えますが、これがFlagでした。 いつものごとく、MD5()の中をMD5でハッシュ化してフラグとなります。


Forensics - Layers

画像ファイルをStringsで見ると、Photoshopで編集していた時のレイヤー名を確認できます。
レイヤー名がFlagになっていました。
こういうのって残るんですね…。 勉強になります。


以上が成果とwriteupになります。
個人的にもっとForensicsをガツガツ行きたかったです。
たくさん修行して目指せ100位以内!