【picoCTF】Riddle Registry - PDFメタデータとBase64からフラグを抽出

問題概要

picoCTFの「Riddle Registry」という問題の解説記事です。

  • カテゴリ: Forensics
  • 難易度: Easy

問題文

picoCTF Riddle Registry

解説

この問題では、与えられたファイル confidential.pdf を解析して、隠されたフラグを見つけることが求められます。

ステップ1: PDFファイル形式の確認

まずはファイル形式の確認から始めます。fileコマンドを使って、confidential.pdf の形式を確認します。
$ file confidential.pdf
confidential.pdf: PDF document, version 1.7, 1 page(s)
この出力から、confidential.pdf はPDFドキュメントであることがわかります。

ステップ2: メタデータの確認

次に、PDFファイルのメタデータを確認します。pdfinfoコマンドを使用します。
poppler-utilsが必要なのでインストールしてください。
$ pdfinfo confidential.pdf
Author:          cGljb0NURntwdXp6bDNkX20zdGFkYXRhX2YwdW5kIV9jYTc2YmJiMn0=
Producer:        PyPDF2
Custom Metadata: no
Metadata Stream: no
Tagged:          no
UserProperties:  no
Suspects:        no
Form:            none
JavaScript:      no
Pages:           1
Encrypted:       no
Page size:       612 x 792 pts (letter)
Page rot:        0
File size:       182705 bytes
Optimized:       no
PDF version:     1.7
ここで、Authorフィールドに注目します。
Authorには通常、PDFの作成者情報が含まれますが、今回はエンコードされた文字列が含まれています。
文字列は終端が=であることから、Base64エンコードされている可能性が高いです。

ステップ3: Base64デコード

Authorフィールドの値をBase64デコードしてみます。Linuxのbase64コマンドを使用します。
$ echo 'cGljb0NURntwdXp6bDNkX20zdGFkYXRhX2YwdW5kIV9jYTc2YmJiMn0=' | base64 -d
picoCTF{*********}

フラグを取得できました。 ※フラグは伏せ字にしています。

使用したコマンドの軽い解説

file

file <ファイル名>
fileコマンドは指定したファイルの種類を判別します。拡張子ではなく、ファイルの中身(マジックナンバー)を基に判別します。
ctfでは拡張子が偽装されていることが多いため、ファイル形式の確認に役立ちます。

pdfinfo

pdfinfo <PDFファイル名>
pdfinfoコマンドはPDFファイル専用の情報表示ツールです。 PDFのメタデータ(作成者、ページ数、サイズなど)を確認できます。
ctfでは、メタデータに隠し情報が含まれていることがあるため、解析に役立ちます。

base64

echo '<Base64エンコード文字列>' | base64 -d
base64コマンドはBase64エンコードおよびデコードを行うツールです。
-dオプションを付けることでデコードが可能です。
ctfでは、Base64エンコードされたデータがよく使われるため、デコードに役立ちます。

まとめ

picoCTFの「Riddle Registry」問題では、PDFファイルのメタデータにBase64エンコードされたフラグが隠されていました。
ファイル形式の確認、メタデータの解析、Base64デコードの基本的なスキルが求められる問題でした。

▼ポイントは以下の通りです。

  • 拡張子やファイル名に惑わされず、まずはファイル形式を確認する。
  • 本文だけでなく、メタデータも解析する。
  • 不自然な文字列はエンコードされている可能性があるため、適切なデコードを試みる。
  • Base64はctfでよく使われるエンコード方式なので、使い方を覚えておく。

閲覧ありがとうございました!

NEXT
次におすすめ

【picoCTF】Hidden in plainsight - JPEGコメントとsteghideで埋め込まれたフラグを抽出

カテゴリ: Forensics難易度: Easy#picoCTF
次の記事へ →
同じカテゴリ/難易度/picoCTFでの表示順が近い記事を優先しておすすめしています。