CTF图片隐写入门
判斷圖片類型
根據圖片的后綴名不能準確的判斷圖片的類型,但通過圖片文件頭部分析能獲得圖片的類型。(查看的時候打開命令行終端,cd到圖片目錄下,binwalk一下就ok啦)
在windows下安裝ubuntu子系統,c盤路徑在/mnt/c中
常見圖片文件的文件頭標志
-
1.JPEG
- 文件頭標識(2 bytes):0xff.0xd8(SOI)(JPEG文件標識)
- 文件結束標識(2 bytes):0xff,0xd9(EOI)
-
2.TGA
- 未壓縮的前5字節 00 00 02 00
- RLE壓縮的前五字節 00 00 10 00 00
-
3.PNG
- 文件頭標識(8 bytes) 89 50 4E 47 0D 0A 1A 0A
-
4.GIF
- 文件頭標識(6 bytes) 47 49 46 38 39(37) 61
-
5.BMP
- 文件頭標識(2 bytes) 42(B) 4D(M)
常規圖片隱寫
圖片隱寫常見的兩種:
- 插入:插入往往利用文件格式的無關數據或者空白區域,放置需要的數據,不會改變原始數據,只是增加了隱寫的內容
- 替換:替換的經典例子就是LSB替換方法,把每個字節最低有效位變換,不會改變文件大小,但是源文件發生了變化
不同文件合并
這種類型首先需要binwalk一下,會出現不同類型文件,再foremost分離一下就可以得到flag啦
圖片合并
這種類型的隱寫也是比較容易發現的,如果發現圖片是jpg的話,觀察文件結束符之后的內容,查看是否有附加內容,正常圖片都會是FF D9結尾的。
文件中插入字符
這種類型一般會出現在文件的頭部或者尾部,發現之后解碼就行啦
JPEG圖片隱寫
JPEG圖片格式分為兩部分:標記碼和壓縮數據,標記碼有字節,高字節固定為0xFF。
- JPEG文件以0xFF 0xD9結束
- 如果后面還有信息,可以用winhex復制出來,保存為新的文件
- 從文件有可以看出文件格式
PNG(便攜式網絡圖形)
該圖片的特點是存儲圖片的方式。該類型的圖片會通過無損壓縮的方式存儲圖片。圖片將會把圖片源碼使用zlib的壓縮編碼后分為IDAT塊進行存儲。每個IDAT能夠存儲65524大小的數據
BMP圖片隱寫
BMP是windows操作系統中的標準圖像,文件格式可分為兩類:設備相關位圖和設備無關位圖使用非常廣泛,它采用位映射存儲格式,除了圖像深度可選以外,不采用其他任何壓縮,因此BMP文件所占用的空間很大,由于BMP文件格式是windows環境中交換與圖有關的數據的一種標準,因此在windows環境中運行的圖形圖像軟件都支持BMP圖像格式。
BMP圖像與其他圖像的主要區別是能夠直接從源代碼中獲取與圖像相關的信息,而不是壓縮數據
BMP圖像隱寫——LSB隱寫
- 因為BMP圖片特征是對圖像進行映射存儲,所以最常見隱寫方式為LSB隱寫
- LSB也就是最低有效位
- LSB隱寫原理就是圖片中的像數一般是由三種顏色組成及三原色,由這三種顏色可以組成其他各種顏色。
- 常見的LSB隱寫也分為兩類:
- 將最低位次層次的二進制代碼直接替換位flag的ascii碼
- 在最低位層次中加入一張帶有flag的圖片
GIF圖片隱寫
這一類需要注意的是,有的題目可能會把gif的后綴改成jpg,這種情況用binwalk查看一下,如果是gif,就將后綴名改為gif,然后再一幀一幀的觀察。
總結
- 上一篇: 数据结构 散列表 除留余数法 线性探测法
- 下一篇: 面试题笔试-带答案-1