問題概要
picoCTFの「Secret of the Polyglot」という問題の解説記事です。
- カテゴリ: Forensics
- 難易度: Easy
問題文
解説
ステップ1: 配布ファイルの確認
問題文から配布ファイル
まずは
flag2of2-final.pdf をダウンロードし、内容を確認します。まずは
evinceでビュワーを起動してみます。$ evince flag2of2-final.pdf
フラグの一部っぽい文字列が表示されています。しかし、完全なフラグではないようです。
1n_pn9_&_pdf_2a6a1ea8}
ステップ2: ファイルタイプの確認
次に、
file コマンドを使ってファイルタイプを確認します。$ file flag2of2-final.pdf
flag2of2-final.pdf: PNG image data, 50 x 50, 8-bit/color RGBA, non-interlaced
flag2of2-final.pdf は実際にはPDFではなく、PNG画像ファイルであることがわかります。拡張子が
.pdfとなっていますが、内容はPNG画像データです。このようなファイルは「ポリグロットファイル」と呼ばれます。ステップ3: 拡張子を変更して内容を確認
拡張子を
.pngに変更し、画像ビューアで開いてみます。$ mv flag2of2-final.pdf flag2of2-final.png
$ xdg-open flag2of2-final.png
フラグの前半部分が表示されました。
以下のような文字列が確認できます。
picoCTF{f1u3n7_
ステップ4: フラグの取得
フラグの前半部分と後半部分を組み合わせると、完全なフラグが得られます。
picoCTF{xxxxx}
※フラグはマスクしています。
使用したコマンドまとめ
evince
evince <PDFファイル名>
LinuxのPDFビューアです。今回のように「配布ファイルがPDFっぽい」ケースでは、まず見た目を確認するのに使えます。
file
file <ファイル名>
拡張子ではなく、ファイルの中身(マジックナンバーなど)を見て形式を判定します。 CTFでは拡張子偽装がよくあるので、最初に実行すると安心です。
mv
mv <元ファイル名> <新ファイル名>
ファイル名(拡張子を含む)を変更します。
今回のように「実体はPNGなのに拡張子がpdf」の場合、
.png に変えて画像として開けるようにします。xdg-open
xdg-open <ファイル名>
Linuxで、既定のアプリケーションでファイルを開きます。 画像なら画像ビューア、PDFならPDFビューアが起動します。
まとめ
この問題は「拡張子に惑わされず中身を見る」ことが重要な、Forensicsの基礎が詰まった問題でした。
▼ポイントは以下の通りです。
fileコマンドでファイルタイプを確認する- 拡張子を変更して異なる形式で内容を確認する
- ポリグロットファイルの概念を理解しておく
NEXT
次におすすめ
読み終わったら、そのまま次へ
【picoCTF】CanYouSee - 画像に隠されたフラグを見つけ出す
カテゴリ: Forensics難易度: Easy#picoCTF
次の記事へ →
同じカテゴリ/難易度/picoCTFでの表示順が近い記事を優先しておすすめしています。