1. 程式人生 > >ctf隱寫篇

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比賽中往往是多個套路融合在一起出題,當然上面的也只是一些常見的套路,我瞭解的還是很少,更多的主要是自己多去練習了,平時多去了解一些檔案的結構。
推薦一本書資料隱藏技術揭祕:破解多媒體、作業系統、移動裝置和網路協議中的隱祕資料這本書說的很全面,值得去閱讀一下。