iT邦幫忙

2026 iThome 鐵人賽

DAY 9
0
Security

CTF 菜鳥修練日誌系列 第 9 篇

Day 09:【Forensics】檔案藏身術:ExifTool 詮釋資料與 Magic Bytes

  • 分享至 

  • xImage
  •  

前言

在 CTF 競賽中,「數位鑑識(Digital Forensics)」就像是扮演網路世界的刑事偵探。攻擊者或出題者經常會把敏感資訊、密碼甚至是 Flag 隱藏在看似平凡無奇的照片、圖片或文件檔案中。

今天我們就來揭開檔案隱藏術的兩大核心原理:Magic Bytes(檔案標頭魔術位元組) 與 Exif / Metadata(詮釋資料),並學習如何利用工具將藏在檔案深處的秘密給挖出來!


本日目標

透過概念分析與實戰指令,掌握以下 Forensics 核心技能:

  1. 理解作業系統如何透過 Magic Bytes(標頭)識別檔案格式,以及如何修復損毀的標頭。
  2. 掌握 ExifTool 工具的使用,學會萃取與分析圖片/媒體檔案中的隱藏 Metadata。
  3. 建立標準的數位鑑識檔案分析 SOP 與常用檢測指令。

預備觀念一:不要相信副檔名!什麼是 Magic Bytes?

在 Windows 系統中,我們習慣透過 .png、.jpg 或 .zip 等副檔名來判斷檔案類型;但對作業系統與程式而言,真正決定檔案結構的是檔案開頭的前幾個位元組,稱為 Magic Bytes(魔術位元組 / 標頭)。

常見檔案標頭對照表

檔案類型 Hex (十六進位標頭) ASCII 呈現
PNG 89 50 4E 47 0D 0A 1A 0A .PNG....
JPEG / JPG FF D8 FF ÿØÿ
GIF 47 49 46 38 GIF8
ZIP / PK 50 4B 03 04 PK..
PDF 25 50 44 46 %PDF

CTF 常見的標頭偽裝與破壞手段

  1. 副檔名偽裝:將 .zip 改名為 .png。雖然點擊無法開啟圖片,但透過 Linux file 指令就能立馬戳破真相。
  2. Header 損毀(Header Corruption):故意將 PNG 前面幾個位元組改成 00 00 00 00,導致相片檢視器提示「檔案已損毀」,攻擊者必須手動透過 Hex Editor 填補回 89 50 4E 47 才能修復。

預備觀念二:照片裡的秘密故事——ExifTool 與 Metadata

當我們用手機或相機拍照時,裝置除了記錄影像像素外,還會自動寫入許多「詮釋資料(Metadata / Exif)」,例如:拍攝時間、GPS 座標、相機型號、繪圖軟體版本等。

在 CTF 題目中,出題者非常喜歡把 Flag 或提示藏在以下欄位:

  • Comment / UserComment(備註)
  • Artist / By-line(作者)
  • Copyright(版權宣告)
  • XPComment 或經過 Base64 編碼的隱密字串

實戰題目:PicoCTF - Information (ExifTool 實戰演練)

  • 題目分類: Forensics
  • 題目敘述: 題目給予一張看似正常的圖片 cat.jpg,要求我們在不破壞檔案的情況下尋找隱藏在檔案內部的秘密 Flag。

解題三部曲:Forensics 數位鑑識實戰步驟

步驟一:驗證檔案真實身份(Identify File Type)

在 WSL 環境中先切換至 Windows 的下載目錄(/mnt/c/Users/acer/Downloads),並使用 file 指令確認 cat.jpg 的真實格式:

cd /mnt/c/Users/acer/Downloads
file cat.jpg
  • Terminal 輸出結果:
cat.jpg: JPEG image data, JFIF standard 1.02, aspect ratio, density 1x1, segment length 16, baseline, precision 8, 2560x1598, components 3

https://ithelp.ithome.com.tw/upload/images/20260922/20184211Gvigdcz4GN.png
分析: 系統明確回傳 JPEG image data,代表這是一張真實且標頭結構完整的 JPEG 圖片,並未遭偽裝或損毀。

步驟二:傾印與檢析 Metadata(Extract Metadata with ExifTool)

接著使用exiftool傾印圖片中所有的詮釋資料:

exiftool cat.jpg
  • 關鍵 Output 欄位:
ExifTool Version Number         : 12.76
File Name                       : cat.jpg
File Type                       : JPEG
Copyright Notice                : PicoCTF
License                         : cGljb0NURnt0aGVfbTN0YWRhdGFfMXNfbW9kaWZpZWR9
Image Size                      : 2560x1598

https://ithelp.ithome.com.tw/upload/images/20260922/20184211kP4bg0XkoS.png
分析: 在 License 欄位發現一串非常可疑的字串 cGljb0NURnt0aGVfbTN0YWRhdGFfMXNfbW9kaWZpZWR9。以cGlj開頭是標準 picoCTF Flag 經過 Base64 編碼後的特徵。

步驟三:Base64 解密與取得 Flag(Decode Base64 Payload)

在 Terminal 中使用echo搭配base64 -d指令對該字串進行解密:

echo "cGljb0NURnt0aGVfbTN0YWRhdGFfMXNfbW9kaWZpZWR9" | base64 -d

解密結果:

picoCTF{the_m3tadata_1s_modified}

Flag: picoCTF{the_m3tadata_1s_modified}


上一篇
Day 08:【Web】Command Injection:當網頁輸入框變成 Terminal
下一篇
Day 10:【Forensics】圖片裡還有圖片?Steganography 隱寫術入門
系列文
CTF 菜鳥修練日誌 共 10 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言