前言
CTF中經常會碰見圖片隱藏文件的題目,今天就來總結一下分離隱藏文件的幾種方法。
1、圖片分析:
如圖為CTF題目中一個隱藏文件的圖片
首先對圖片進行分析,這里介紹一個工具binwalk(kali中是自帶的,也可以下載到windows中使用)。
使用方法:binwalk + 文件路徑/文件名
binwalk 1.jpg
執行命令后,binwalk就會自動分析這個jpg文件:
從分析的結果看,這個jpg文件隱藏着一個zip文件,從48221塊偏移開始就是zip文件。
2、如何分離:
在得到隱藏信息后,改如何把zip文件分離出,下面介紹幾種方法:
2.1、binwalk 分離:
還是使用binwalk工具,使用dd命令分離出隱藏文件:
dd if=1.jpg of=1.zip skip=48221 bs=1
解釋:if 指定輸入文件,of 指定輸出文件,skip 指定從輸入文件開頭跳過48221個塊后開始復制,bs設
置每次讀寫塊的大小為1字節
執行后會得到一個1.zip文件。
2.2、foremost 工具分離:
foremost是一個基於文件文件頭和尾部信息以及文件的內建數據結構恢復文件的命令行工具,win可以下載使用,Linux可以通過下面命令安裝使用:
apt-get install foremost
Linux下分離文件的命令為:
foremost 1.jpg
執行命令后,foremost會生成output目錄存放分離出的文件。
Win下是把文件直接拖到 foremost.exe上,也會生成output目錄存放分離出的文件。
2.3、hex編輯器分離:
hex編輯器有很多,win下有用得較多的winhex、UltraEdit等,linux下有hexeditor等。這里我們以winhex為例來手動分離。
一個完整的 jpg 文件由 FF D8 開頭,FF D9結尾,圖片查看器會忽略 FF D9 以后的內容,因此可以在 jpg 文件中加入其他文件。
經過上面的分析, 知道圖片中隱藏了zip文件,zip文件的開頭16進制為504B0304,先搜索16進制文本 FFD9,然后后面跟着504B0304,於是就可以從 50 開始,復制到最后(因為這里只有一個zip,所以復制到最后),另存為新文件,就得到了隱藏的壓縮包。
2.4、改后綴名:
分析知道隱藏文件是zip后,有一個簡單粗暴的方法是直接把圖片的后綴改為.zip,然后解壓即可(這種方法雖然簡單快速,但如果隱寫了多個文件時可能會失敗)。