ctf隱寫篇
本人從大學開始接觸ctf,想對ctf中的隱寫題做一個總結。
隱寫其實是一門很深的學問,在ctf中我們常見的是圖片的隱寫,以下我們將談到的是一些基本的圖片隱寫及其所涉及到的一些問題。
一個概念
隱寫指的是隱藏資訊,資訊是不可見的,而在密碼學中,資訊是可見的,只是順序被打亂了,直接觀察讓人無法理解。
一、圖種
圖種主要是對於JPG(一種有失真壓縮)格式的圖片來說的,利用了圖片檢視器的一個特點,檢視器只檢查jpg圖片的頭(FF D8),不會去檢查圖片尾(FF D9)及其以後的內容。圖種就是將隱藏檔案加在了FFD9後面
圖種的製作其實很簡單,cmd中執行命令 copy /b 1.jpg+2.zip out.jpg
發現FFD9後多了一些內容
當在ctf中遇到一個jpg格式的圖片,用winhex開啟它,使用winhex的快捷鍵ctrl+alt+x搜尋一下找到FFD9
看一下其後有沒有其他的內容,如果後面發現還有其他資訊(通常是 50 4B),如果是50 4B,可以直接將檔案字尾名改為zip,就可以得到隱寫的檔案,或者使用兩款工具binwalk和foremost,binwalk會去檢查檔案的格式發現其中是否含有其他檔案,foremost主要的作用是將含有的其他檔案分離出來。
在此目錄先生成output資料夾
其實只要瞭解檔案格式,圖種其實很簡單,在ctf題中只作為考察的一部分,通常會與其他內容相結合來考察。
二、png
png(無失真壓縮格式)的詳細格式請見連結
一道ctf題: 連結:http://pan.baidu.com/s/1i5GfgA5 密碼:v47e
看到是一個png的圖片,先用圖片檢視器開啟圖片,檢視詳細資訊
發現圖片的高度和寬度不太對,winhex開啟
對格式做一下解釋
89 50 4E 0D 0A 1A 0A //影象的標識
00 00 00 0D //檔案頭資料塊IHDR的長度 0x0D = 13Byte
49 48 44 52 //IHDR標識
00 00 02 A7 //影象的寬度,單位為畫素 4Byte
00 00 01 00 //影象的高度,單位為畫素 4 Byte
後面還有5Byte的內容為圖片的顏色方面的內容
修改圖片的高度,得到flag.
三、zip
對於zip檔案通常有爆破、字典、偽加密、掩碼攻擊、明文攻擊等,主要是使用工具AZPR
偽加密:主要是與zip的格式有關,要了解zip檔案的格式。其主要與zip的加密位有關,可以參考連結
爆破:即暴力破解,利用ZipRar進行爆破,這種方法難度較大,成功率較低
字典 : 通過字典進行爆破,通常可以根據題目的提示,如生日啦。來選取相應的字典
掩碼攻擊: 根據題目知道了密碼的範圍或者是得到密碼的部分,來猜其他位。
明文攻擊: 這是一種較為高效的方法,對於一個zip加密檔案,已知加密檔案中的某一個檔案,將已知 檔案按加密檔案的壓縮演算法壓縮,在使用明文攻擊,可以較快得到結果。明文攻擊主要的原理是利用了兩檔案的壓縮演算法相同,用已知檔案去撞加密檔案中的已知檔案。
連結:http://pan.baidu.com/s/1dFrQJPR 密碼:wxxp
開啟壓縮包,檢查檔案(binwalk),發現存在圖種,用foremost分離,遇到zip加密,通過觀察發現加密zip中有檔案為已知檔案
發現可以進行名明文攻擊
最好得到三個key,雖沒有爆出密碼但是得到了加密zip中的檔案(flag.jpg),檢查一下,發現了不為人知的祕密。
crc32爆破
crc(Cyclic Redundancy Check)是一種迴圈冗餘校驗碼,主要是資料傳輸過程中用來檢錯的,也可稱為檢錯碼,主要是原理是利用了二進位制的模2運算,在這裡就不展開了
主要的思路
這個主要是要寫指令碼,去爆破它。
四、data:image/型別 + ntfs檔案流 +盲水印隱寫
data:image/型別
<img src="" /> //將檔案內容放入""中,將檔案字尾名改為html
用瀏覽器開啟就見到圖片了
或者的使用線上的解碼網站
盲水印隱寫
一道ctf 題 連結:http://pan.baidu.com/s/1slDhhvf 密碼:vroj
首先是使用明文攻擊,得到加密壓縮包中的圖片,發現fuli.png和fuli2.png兩個檔案,判斷是盲水印
指令碼
使用 bwm.py
python bwm.py decode fuli.png fuli2.png wm_out.png
得到flag
總結一下
以上所說的一些方法,在ctf比賽中往往是多個套路融合在一起出題,當然上面的也只是一些常見的套路,我瞭解的還是很少,更多的主要是自己多去練習了,平時多去了解一些檔案的結構。
推薦一本書資料隱藏技術揭祕:破解多媒體、作業系統、移動裝置和網路協議中的隱祕資料這本書說的很全面,值得去閱讀一下。