CTF中常遇到的圖片隱寫

PNG 格式簡介

文件格式:對於PNG文件來說,其文件頭總是由固定的位元組來描述的,剩餘的部分由3個以上的PNG數據(Chunk)按照特定的順序組成。

文件頭:89 50 4E 47 0D 0A 1A 0A + 數據塊 + 數據塊 + 數據塊…..

修改圖片高度

如果linux下打不開,windows下打得開可能就是該高度了。

左邊是寬度,圈起來的是高度,把高度改的大一點。

文件尾追加文件

如果是追加文本,直接十六進位編輯器查看就可以

如果追加的是圖片或者壓縮包之類的,可以使用 binwalk 或者 foremost 來提取出來

圖片元數據

元數據(Metadata),又稱中介數據、中繼數據,為描述數據的數據(Data about data),主要是描述數據屬性(property)的資訊,用來支援如指示存儲位置、歷史數據、資源查找、文件記錄等功能。

元數據中隱藏資訊在比賽中是最基本的一種手法,通常用來隱藏一些關鍵的 Hint 資訊 或者一些重要的比如 password 等資訊。

聽著挺唬人實際就是文件屬性

這類元數據可以 右鍵文件 -> 屬性 查看

outguess

kali下使用

outguess -r avatar.jpg -t 1.txt

把 avatar.jpg 圖片破解資訊的數據輸出到 1.txt

f5-steganography
鏈接:

https://pan.baidu.com/s/1avAdUWvzdWng_dQVcW-Zmw

提取碼:uwzg

F5隱寫加密:

java Embed 原圖片.jpg 生成的圖片.jpg -e 隱藏的文件.txt -p 密碼

F5隱寫解密:

java Extract 生成的圖片.jpg -p 密碼

演示:

ps. 之所以使用 jview 是看自帶的 .bat 文件是用的這個,但是用 java 貌似沒啥影響

Beyond Compare
使用軟體:

https://pan.baidu.com/s/1IajuX2HQVSVONkbCfjobfQ

提取碼: uuch

安裝打開後介面是這樣的:點擊紅框框出來的

選擇圖片比較

上面還有一些選項可以試試

IDAT資訊隱藏
IDAT:存儲實際的數據,在數據流中可包含多個連續順序的影像數據塊,儲存影像像數數據。

在數據流中可包含多個連續順序的影像數據塊。

採用 LZ77 演算法的派生演算法進行壓縮。

可以用 zlib 解壓縮。

IDAT塊只有當上一個塊充滿時,才會繼續下 一個新塊

如果有 IDAT 還沒填滿就填充了下一個就要考慮是不是有問題

命令:

pngcheck.exe -v sctf.png 可以查看

也可以使用 Stegsolve 的 Analysis -> File Format 有詳細介紹

這就說明這 138 是認為添加的,把這個位置的內容保存出來,再進行其他操作(文本進位轉換、寫圖片)

LSB資訊隱藏

PNG文件中的影像像數一般是由RGB三原色組成,每一種顏色佔用8位,取值範圍為 0×00~0xFF,即256種顏色,一共包含了256的三次方的顏色,即16777216(1千677W)種顏色。人類的眼睛可以區分約1000萬種不同的顏色,這就意味著人類的眼睛無法區分餘下的顏色大約有6777216(677W)種

LSB隱寫就是修改RGB顏色分量的最低二進位位(LSB),每個顏色都會有8bit,LSB隱寫就是修改了像數中的最低的1Bit,而人類的眼睛不會注意到這前後的區別,每個像數可以攜帶 3Bit的資訊,這樣就把資訊隱藏起來了

使用 Stegsolve 各個通道都看看,或者 Analysis -> Data Extract 合起來看看,有什麼熟悉的保存出來

GIF資訊隱藏

在某一幀圖片藏著資訊,用 ps 或者愛奇藝萬能播放器也可以一幀一幀的看

每一幀圖片間隔時間,可能藏著規律,或許是二進位編碼、或許是摩斯密碼

NTFS流隱寫

安恆的一道題:貓片,先是 LSB 提取一個 png,然後改高度得到完整的取反色,下載文件,得到 RAR,使用 NTFS 流隱寫,打開軟體,然後用 winrar 解壓縮,然後掃描一下,發現一些其他的東西,導出就可以了。