はじめに
初投稿になります。lovedと申します。
都内でアプリケーション開発エンジニアとして仕事を始めてはや数年。。
大好きなCTFに参加する余裕も出てきまして(素人に毛根が生えた程度ですが)
この機会に日々お世話になっているQiitaに貢献したく、
浅学者ながら、今回参加しましたTrendMicroCTF2018の
witeupを投稿致します。
どうぞ、お手柔らかにお願い致します。
対象読者
CTF初心者の方
投稿背景
熟練者からは簡単すぎる問題であるため、この問題のwriteupはネット上に詳細がほとんどなく、、
詳細に解説することで、CTF勉強中の方のお役に立てればと感じた次第です。
「こうしたらもっと簡単に解けた」などございましたらコメントにて補足頂けると嬉しいです。
(お、お手柔らかに・・・)
後に訪れた読者の方にも、少しでも有益な記事になればと思います。
問題
PDFファイルが与えられ、その中からflagを見つけ出せというものでした。
問題文がくせもので、「全てのツールを使用してください!」といった文言に惑わされてしまい、
画像の解析やPDFの詳細データの確認といった本質的でない部分に時間を取られました。。
使用環境
VirtualBox-Kali-Linux
WIndows
解法
0:binwalkコマンドにて与えられたPDFファイルを調査します。
PDFファイルのほかにJPGファイルとZIPファイルが埋まっていることがわかります。
1:Stirling等バイナリエディタを使用し、与えられたPDFファイルを読み込みます。
2:下記サイトを参考に(本当にありがとうございます。)ZIPシグネチャを確認し、
(http://www.tvg.ne.jp/menyukko/cauldron/dtzipformat.html)
ZIPファイルである部分(正確にはローカルファイルヘッダのシグネチャから、エンドセントラルディレクトリレコード終端まで)を切り取り、別ファイルに保存します。(a.zipといった感じでとりあえず置いておきます。)
3:2で保存したZipファイルをバイナリエディタで読み込み、セントラルファイルヘッダの上から2ファイルのファイル名称を、
ローカルファイルヘッダの2ファイルの名称(flag.txtとgalf.txt)に編集・変更し、
残りのセントラルファイルヘッダを削除した上で、さらに別ファイルに保存します。
4:3のZIPを解凍してflag.txtの中身をCTFの解答フォームにsubmit (おめでとう、100点GET!)
TMCTF{QWxpY2UgaW4gV29uZGVybGFuZA==}
ハマりどころ
「とりあえずbinwalkしてみたらファイルが複数埋まっとるわ」
「foremostでさっさと取り出したろ」
「お、zipあるやん、unzipしたるわ」
Boooooom!(VM固まる)
「なんでや・・・・・・」
「PDFファイルにあった画像のアリスとうさぎが関係あるんか?」
「原作に何かヒントがあるかもしれん、そっちも洗ってみよう」(後から考えると「ええっ・・・」って感じですが。。)
ご覧の通りローカルファイルヘッダが合っていませんよと堂々と言われているんですが、
当時の私はあたふたして結局時間を食ってしまいました。。。
反省と今後
一人でこっそり参加しては大した戦果も上げられずおめおめ帰国しているところで、、、
メンターの大事さと個人の限界を感じたりもしています。。
このまま独学で訓練を積んでも成長はできるでしょうが、やはりどこかよそ様のチームにJOINさせて頂き、
いろいろ盗みながら学んだ方が合理的かなと思っています。
というわけで次回CTFはチーム参加を目論んでおりますゆえ、
募集されているチームの方がいらっしゃいましたら御相談させて頂ければと思います。
以上です。
御観覧頂きまして、ありがとうございました。