📑
Writeup|picoCTF DISKO 1
ディスクイメージ解析の基本
1. ファイルシステム構造を確認
-
file
コマンドでファイル種別を調べるfile disk.img
-
binwalk
(バイナリファイルの中に何があるかを解析する)- バイナリファイルとは:コンピュータが読める“0と1のデータのかたまり”のこと(↔︎テキストファイル)
-
.img
,.dd
(ディスクイメージ) -
.exe
,.bin
(実行ファイル)
-
binwalk file.img # 構造を調べる binwalk -e file.img # 埋め込みファイルを自動抽出(extract(抽出))
- バイナリファイルとは:コンピュータが読める“0と1のデータのかたまり”のこと(↔︎テキストファイル)
-
fdisk -l
(パーティションの確認)- 各パーティションにOSやデータを入れられる
fdisk -l disk.img
2. マウントして中身を確認(ディスク(imgファイル)をOSが読める形にする操作)
-
ループデバイスを使ってマウント
(ファイルを“仮想のディスク”として扱うための仕組み)mkdir mnt sudo mount -o loop disk.img mnt ls mnt
-
マウントできない場合はオフセット(読み始めるスタート地点)指定:
- fdisk -lを使って出てきたセクタ番号×セクタサイズ
sudo mount -o loop,offset=OFFSET disk.img mnt
オフセットは
fdisk
orbinwalk
で確認
3. 中のファイルを調査
-
.bash_history
や.zshrc
、flag.txt
、hidden
ディレクトリを探す -
ファイルの拡張子がなくても中身をチェック
strings ファイル名 file ファイル名
4. 削除済みファイルの復元
-
foremost
やtestdisk
,photorec
でファイルを復元foremost -i disk.img -o out/
5. マウントせず直接バイナリ解析
-
strings
コマンドで平文を探す(flag埋め込み対策)strings disk.img | grep -i picoCTF
-
hexdump -C
でバイナリの中身を16進+ASCIIで確認する- ファイルの先頭にあるマジックバイトや埋め込み文字列を探せる
hexdump -C file.img
よく使うツールまとめ
ツール | 用途 |
---|---|
file |
ファイルタイプの確認 |
binwalk |
ファイルの中の構造確認 |
fdisk |
パーティション構造を見る |
mount |
イメージを仮想ディスクとしてマウント |
strings |
テキスト抽出 |
foremost |
削除ファイルの復元 |
hexdump |
バイナリの中身を16進+ASCIIで表示 |
解法
💡ヒント:「stringsコマンドを使えば見つかるかも?」というニュアンスあり
- ファイルをダウンロードして、ヒントにある通りにStringsコマンドでpicoの文字を探して終了
strings ~/Downloads/disko-1.dd | grep -i pico
# -i :大文字・小文字を区別しない検索
→picoCTF{…}の文字列あり
Discussion