【picoCTF】[DISKO 4] Writeup
問題概要
- Category: Forensics
Description:
Can you find the flag in this disk image? This time I deleted the file! Let see you get it now!
Download the disk image here.
日本語訳:
このディスクイメージの中からフラグを見つけられますか?今回はファイルを削除してしまいました!探してみてね!
ディスクイメージはこちらからダウンロードしてください。
解法のプロセス(アプローチ)
1. ファイルの確認と解凍
まずはダウンロードしたファイル(disko-4.dd.gz)を解凍します。
gunzip disko-4.dd.gz
解凍して disko-4.dd を得ることが出来ました。
今回も The Sleuth Kit (TSK) の fls などの機能を用いて解析していきます。
2. ディスクイメージ内の削除ファイル一覧抽出(fls)
まずは fls コマンドを使って、ディスクイメージの中にあるファイルの一覧を抽出します。
今回は問題文に「今回はファイルを削除してしまいました!(I deleted the file!)」とあるため、削除されたファイルがキーになります。
fls -d -r disko-4.dd > output.txt
-
-r: フォルダの中身も再帰的にすべてリストアップする指示。 -
-d: 削除されたファイルやディレクトリのみを表示する指示(Deletedのd)。このオプションを使うことで、通常のファイルを省き、削除済みデータだけをピンポイントで抽出できます。
出力結果の中身を見てみましょう。
cat output.txt
実行結果:
r/r * 522629: log/messages
r/r * 532021: log/dont-delete.gz
(※出力結果にある * マークは、そのファイルが「削除されている」ことを示しています。)
いかにも怪しいファイル dont-delete.gz を発見しました!
3. ファイルの抽出とフラグの獲得(icat)
ログの該当行を見ると、このファイルのiノード番号(データの実体を指し示す番号)が 532021 であることが分かります。
The Sleuth Kitの icat コマンドを使うと、削除されて見えなくなったファイルでも、iノードのデータが上書きされていなければ抽出することができます。
今回はファイル名が .gz(圧縮データ)であるため、ターミナル上に直接出力すると文字化けして正しく内容を理解できません。そのため、リダイレクト(>)を使って一度ファイルとして出力(保存)します。
icat disko-4.dd 532021 > dont-delete.gz
これで無事に削除されていた圧縮ファイルを救出できました。あとはこれを解凍して中身を確認するだけです。
gunzip dont-delete.gz
解凍して出てきた dont-delete ファイルの中身を strings コマンド(または cat コマンド)で読み取ります。
strings dont-delete
実行結果:
Here is your flag
picoCTF{d3l_d0n7_h1d3_w3ll_bc352004}
フラグが見つかりました!!
Flag:
picoCTF{d3l_d0n7_h1d3_w3ll_bc352004}
お疲れさまでした!