今天學(xué)習(xí)做一些簡(jiǎn)單的隱寫術(shù)的題料按,來(lái)了解一些關(guān)于圖片的相關(guān)知識(shí)杰妓。
第一題簡(jiǎn)單的隱寫
這個(gè)一個(gè)小兔子,我先直接用Notepad打天埋涧,并搜索一下flag和key板辽,發(fā)現(xiàn)沒(méi)有,當(dāng)瀏覽內(nèi)容的最后時(shí)棘催,發(fā)現(xiàn)一串有趣的十進(jìn)制如下劲弦。
打開(kāi)ASCII碼表后發(fā)現(xiàn)107就是k
那一定就是這串十進(jìn)制就是flag了。
寫一個(gè)小的python腳本吧
str ='107;101;121;123;121;111;117;32;97;114;101;32;114;105;103;104;116;125'
str_ascii =''
for x in str.split(';'):
str_ascii = str_ascii +chr(int(x))
print(str_ascii)
得到結(jié)果key{you are right}
第二題隱寫1
這是Bugku中的隱寫1醇坝,這個(gè)題看到之后運(yùn)用上面的方法打開(kāi)后發(fā)現(xiàn)沒(méi)有什么信息瓶您,將這個(gè)文件在kali中查看一下,發(fā)現(xiàn)不能打開(kāi)纲仍,而在windows是可以打開(kāi)這個(gè)圖片的哭尝。
Kali不能打開(kāi)养筒,提示CRC錯(cuò)誤
Windows就可以順利打開(kāi)圖片PNG的文件結(jié)構(gòu),這說(shuō)明這個(gè)圖片應(yīng)該是修改過(guò)圖片的大小产禾,所以運(yùn)用工具打開(kāi)看圖片文件格式明棍。根據(jù)PNG文件的定義來(lái)說(shuō)乡革,其文件頭位置總是由位固定的字節(jié)來(lái)描述的:
[if !supportLists]l?[endif]十進(jìn)制數(shù)
137 80 78 71 13 10 26 10
[if !supportLists]l?[endif]十六進(jìn)制數(shù)
89 50 4E 47 0D 0A 1A 0A
其中第一個(gè)字節(jié)0x89超出了ASCII字符的范圍,這是為了避免某些軟件將PNG文件當(dāng)做文本文件來(lái)處理摊腋。文件中剩余的部分由3個(gè)以上的PNG的數(shù)據(jù)塊(Chunk)按照特定的順序組成沸版,因此,一個(gè)標(biāo)準(zhǔn)的PNG文件結(jié)構(gòu)應(yīng)該如下:
PNG文件標(biāo)志 ????PNG數(shù)據(jù)塊 ????…… ???PNG數(shù)據(jù)塊
數(shù)據(jù)塊結(jié)構(gòu)
PNG文件中兴蒸,每個(gè)數(shù)據(jù)塊由4個(gè)部分組成视粮,如下:
名稱字節(jié)數(shù)說(shuō)明
Length (長(zhǎng)度)4字節(jié)指定數(shù)據(jù)塊中數(shù)據(jù)域的長(zhǎng)度,其長(zhǎng)度不超過(guò)(231-1)字節(jié)
Chunk Type Code (數(shù)據(jù)塊類型碼)4字節(jié)數(shù)據(jù)塊類型碼由ASCII字母(A-Z和a-z)組成
Chunk Data (數(shù)據(jù)塊數(shù)據(jù))可變長(zhǎng)度存儲(chǔ)按照Chunk Type Code指定的數(shù)據(jù)
CRC (循環(huán)冗余檢測(cè))4字節(jié)存儲(chǔ)用來(lái)檢測(cè)是否有錯(cuò)誤的循環(huán)冗余碼
CRC(cyclic redundancy check)域中的值是對(duì)Chunk Type Code域和Chunk Data域中的數(shù)據(jù)進(jìn)行計(jì)算得到的橙凳。CRC具體算法定義在ISO 3309和ITU-T V.42中蕾殴,其值按下面的CRC碼生成多項(xiàng)式進(jìn)行計(jì)算:
x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x+1
CRC:一種校驗(yàn)算法。僅僅用來(lái)校驗(yàn)數(shù)據(jù)的正確性的
下面岛啸,我們依次來(lái)了解一下各個(gè)關(guān)鍵數(shù)據(jù)塊的結(jié)構(gòu)吧钓觉。
IHDR
文件頭數(shù)據(jù)塊IHDR(header chunk):它包含有PNG文件中存儲(chǔ)的圖像數(shù)據(jù)的基本信息,并要作為第一個(gè)數(shù)據(jù)塊出現(xiàn)在PNG數(shù)據(jù)流中坚踩,而且一個(gè)PNG數(shù)據(jù)流中只能有一個(gè)文件頭數(shù)據(jù)塊荡灾。
文件頭數(shù)據(jù)塊由13字節(jié)組成,它的格式如下表所示。
域的名稱字節(jié)數(shù)說(shuō)明
Width4 bytes圖像寬度批幌,以像素為單位
Height4 bytes圖像高度础锐,以像素為單位
Bit depth1 byte圖像深度:?索引彩色圖像:1,2逼裆,4或8?灰度圖像:1郁稍,2,4胜宇,8或16?真彩色圖像:8或16
ColorType1 byte顏色類型:0:灰度圖像, 1耀怜,2,4桐愉,8或16?2:真彩色圖像财破,8或16?3:索引彩色圖像,1从诲,2左痢,4或8?4:帶α通道數(shù)據(jù)的灰度圖像,8或16?6:帶α通道數(shù)據(jù)的真彩色圖像系洛,8或16
Compression method1 byte壓縮方法(LZ77派生算法)
Filter method1 byte濾波器方法
Interlace method1 byte隔行掃描方法:0:非隔行掃描?1: Adam7(由Adam M. Costello開(kāi)發(fā)的7遍隔行掃描方法)
根據(jù)上面的描述俊性,我畫橫線的八位就是高度和寬度設(shè)置的位置,我們將A4改為F4然后再保存描扯。發(fā)現(xiàn)flag
第三題隱寫2
題目為BugKu雜項(xiàng)中的隱寫2定页,在kali中打開(kāi)是如下的圖片
先用binwalk分析一下圖片內(nèi)容,發(fā)現(xiàn)有zip的文件绽诚。
所以對(duì)其進(jìn)行分離典徊。得到flag.rar文件如圖。因?yàn)閎inwalk分析出來(lái)是zip文件恩够,所以修改為zip格式卒落。
在解壓zip時(shí),發(fā)現(xiàn)有密碼蜂桶,查看提示圖片說(shuō)是3個(gè)數(shù)字為密碼儡毕。所以運(yùn)用fcrachzip工具進(jìn)行爆破。得出密碼871
解壓后發(fā)現(xiàn)還是圖片
運(yùn)用notepad打開(kāi)發(fā)現(xiàn)
但這個(gè)是base64編碼扑媚,要解碼妥曲。