在 CTF 中,我們經常會拿到一個副檔名為.img
或 .dd
的磁碟映像檔 (Disk Image),需要從中還原檔案、追查使用紀錄,甚至找出隱藏資料,才能取得 flag。
什麼是 Disk Image?
- 一個 磁碟映像檔 (Disk Image) 包含:
- 檔案系統 (File System)
- 使用者檔案
- 已刪除但未覆寫的殘留資料
- Metadata(建立時間、修改時間、存取時間等)
- 常見的副檔名:
.img
、.dd
、.iso
什麼是The Sleuth Kit (TSK)?
- The Sleuth Kit(簡稱 TSK)是一套專門用來做 數位鑑識 (Digital Forensics) 的開源工具包
- 它能分析磁碟映像檔中的 檔案系統、Metadata、刪除檔案 等資訊。
常用TSK指令
img_stat
- 用途:查看磁碟映像檔的基本資訊(大小、磁區大小、類型、分割資訊)
- 使用時機:拿到 .img 或 .dd 檔的第一步,先了解這顆磁碟的結構
- 🌰
img_stat disk.img
mmls
- 用途:顯示磁碟映像檔內的分割區資訊
- 使用時機:確認檔案系統從哪個 offset 開始,供後續指令使用
- 🌰
mmls disk.img
- 📌 注意 Start 欄位的數值,後續像 fls、icat 要用
-o <offset>
fsstat
- 用途:顯示某個檔案系統的細節
- 使用時機:分析文件系統類型與結構
- 🌰
fsstat -o <offset> disk.img
fls
- 用途:列出檔案系統中的檔案與目錄(包含已刪除的)
- 使用時機:找到目標檔案或目錄(例如 flag.txt 或特定資料夾)
- 🌰
fls -o <offset> -r disk.img
- 🌰
fls -o <offset> -r disk.img <inode>
ffind
- 用途:根據 inode 編號,去找這個檔案的 完整路徑/名稱
- 使用時機:只有 inode,但想知道檔案的原始路徑或名稱
- 🌰
ffind -o <offset> disk.img <inode>
tsk_recover
- 用途:從映像檔中恢復檔案(包含刪除檔)
- 使用時機:想直接將檔案系統內容 dump 出來分析(不用一個個 icat)
- 🌰
tsk_recover -o <offset> disk.img output_dir/
- 會把整個分割區的檔案複製到 output_dir,可以直接用 ls 看
icat
- 用途:依 inode 號碼從映像檔中提取單一檔案
- 使用時機:用 fls 找到特定檔案 inode 後,用來匯出內容
- 作用檔案:磁碟映像檔
- 🌰
icat -o <offset> disk.img <inode>
- 📌 上面會把 inode 為 128 的檔案內容印出來,可以用 > output 存檔
istat
- 用途:顯示指定 inode 的 metadata(建立時間、大小、狀態)
- 使用時機:想知道檔案什麼時候被建立、是否刪除、還在不在
- 🌰
istat -o <offset> disk.img <inode>
- 📌 刪除檔案也會有 metadata(可能幫助你確認「flag.txt 是不是被刪掉」)
這題解壓縮後,用mmls dds2-alpine.flag.img
查看一下分割區資訊,得到offset
為2048
我們現在知道要找的檔案的名字,所以可以直接讓他列出全部的檔案再搜尋fls -o 2048 -r dds2-alpine.flag.img| grep "down-at-the-bottom"

找到他的inode
為18291
我們可以用icat -o 2048 dds2-alpine.flag.img 18291 > dds2.txt
將他的內容提取到dds2.txt
然後我們用cat dds2.txt
查看他的內容!

獲得flag啦~
以上就是有關disk image的內容啦
想看更多,歡迎明天再來ㄛ~