問題概要
picoCTFの「Hidden in plainsight」という問題の解説記事です。
- カテゴリ: Forensics
- 難易度: Easy
問題文
解説
この問題では、与えられたファイル
img.jpg を解析して、隠されたフラグを見つけることが求められます。ステップ1: 画像ファイル形式の確認
まずはファイル形式の確認から始めます。fileコマンドを使って、
img.jpg の形式を確認します。$ file img.jpg
img.jpg: JPEG image data, JFIF standard 1.01, aspect ratio, density 1x1, segment length 16, comment: "c3RlZ2hpZGU6Y0VGNmVuZHZjbVE9", baseline, precision 8, 640x640, components 3
この出力から、
これはフラグの手がかりとなる可能性があります。
img.jpg はJPEG画像であることがわかります。
commentフィールドに着目すると、エンコードされた文字列が含まれています。これはフラグの手がかりとなる可能性があります。
ステップ2: コメントのデコード
文字列(c3RlZ2hpZGU6Y0VGNmVuZHZjbVE9)は終端が
ですので、Base64デコードを試みます。
=や==ではありませんが、文字列の構成からBase64エンコードされている可能性が高いです。ですので、Base64デコードを試みます。
$ echo "c3RlZ2hpZGU6Y0VGNmVuZHZjbVE9" | base64 -d
steghide:cEF6endvcmQ=
デコードの結果、
steghide:cEF6endvcmQ= という文字列が得られました。ここで、
おそらく、
steghide: という部分に注目します。steghideはステガノグラフィー(画像などのメディアファイルにデータを隠す技術)に関連するツールの名前です。おそらく、
steghideツールを使用して、img.jpgから隠されたデータを抽出する必要があることを推測できます。続く部分
cEF6endvcmQ=は終端が=であることから、Base64エンコードされた文字列である可能性が高いです。cEF6endvcmQ=をBase64デコードしてみます。$ echo "cEF6endvcmQ=" | base64 -d
pAzzword
デコードの結果、
これはおそらく、
pAzzword という文字列が得られました。これはおそらく、
steghideツールで使用するパスワードです。ステップ3: steghideでのデータ抽出
次に、
※
steghideツールを使用して、img.jpgから隠されたデータを抽出します。※
steghideがインストールされていない場合は、インストールしてください。$ steghide extract -sf img.jpg -p pAzzword
wrote extracted data to "flag.txt".
このコマンドにより、
img.jpgから隠されたデータが抽出され、flag.txtというファイルに保存されます。ステップ4: フラグの確認
最後に、
flag.txtファイルの内容を確認します。$ cat flag.txt
picoCTF{××××××}
flag.txtからフラグを取得できました。
※フラグは伏せ字にしています。使用したコマンドの軽い解説
file
file <ファイル名>
fileコマンドは指定したファイルの種類を判別します。拡張子ではなく、ファイルの中身(マジックナンバー)を基に判別します。 ctfでは拡張子が偽装されていることが多いため、ファイル形式の確認に役立ちます。
echo + base64
echo '<Base64エンコード文字列>' | base64 -d
base64コマンドはBase64エンコードおよびデコードを行うツールです。
ctfでは、Base64エンコードされたデータがよく使われるため、デコードに役立ちます。
-dオプションを付けることでデコードが可能です。ctfでは、Base64エンコードされたデータがよく使われるため、デコードに役立ちます。
steghide
steghide extract -sf <画像ファイル名> -p <パスワード>
steghideコマンドは、画像や音声ファイルにデータを隠したり、抽出したりするためのツールです。
-sfオプションでステガノグラフィー対象のファイルを指定し、-pオプションでパスワードを指定します。
ctfでは、画像ファイルに隠されたデータを抽出するのに役立ちます。まとめ
picoCTFの「Hidden in plainsight」問題では、画像ファイルのコメントにBase64エンコードされた情報が隠されており、
それを手がかりにしてsteghideツールを使用して隠されたデータを抽出しました。
ファイル形式の確認、Base64デコード、ステガノグラフィー解析の基本的なスキルが求められる問題でした。
▼ポイントは以下の通りです。
それを手がかりにしてsteghideツールを使用して隠されたデータを抽出しました。
ファイル形式の確認、Base64デコード、ステガノグラフィー解析の基本的なスキルが求められる問題でした。
▼ポイントは以下の通りです。
- 拡張子やファイル名に惑わされず、まずはファイル形式を確認する。
- 画像ファイルのメタデータ(コメントなど)にも注目する。
- 不自然な文字列はエンコードされている可能性があるため、適切なデコードを試みる。
- steghideなどのステガノグラフィーツールの使い方を覚えておく。
閲覧ありがとうございました!
NEXT
次におすすめ
読み終わったら、そのまま次へ
【picoCTF】Flag in Flame - 巨大ログからBase64化されたPNGを復元してフラグ取得
カテゴリ: Forensics難易度: Easy#picoCTF
次の記事へ →
同じカテゴリ/難易度/picoCTFでの表示順が近い記事を優先しておすすめしています。