ctf解題--當眼花的時候,會顯示兩張圖(隱寫)
題目
解題
- 下載圖片
wget http://ctf5.shiyanbar.com/stega/final.png
- kali自帶binwalk
binwalk final.png
發現從1922524開始偏移
用dd命令進行分離
分離後得圖片儲存為final-1.png
開啟圖片發現無差別compare兩個檔案
比較結果存為out.png- 開啟out.png
發現圖片左下角有紅線
為方便分析將out.png重新命名為out.bmp格式 - kali自帶十六進位制編輯器hexdump或用winhex開啟
png圖片的掃描是從左向右,從下往上來的
hexdump out .bmp
黑色的像數的在bmp中的hex的00儲存的,那麼我們就尋找不是00的地方,在偏移0x1110的地方可以發現有不是00的位元組,一開始還以為這些就是flag的資訊了,後來才發現是因為兩個圖片sub影響到了效果,真正的資訊是隱藏在final-1.png中的,所以開啟由final-1.png轉換的final-1.bmp來對,通過之前diff得到的偏移,尋找到0x1110的地方,直到0x1330結束,這是隱藏的資訊
- 只保留00 01,這個是因為RGB的關係,只隱藏在R通道里面了,其他通道都是圖片的正常像數資訊,過濾掉就可以了
00010000010000010001000100000101000100000001010100010101010001010001000000010001000001010001000000010101000001010001000101000001000100010101010100010001000001010001010100010000000100000001000100010100000101010000010100010000000101000101010000000101000000000001010000010101000100010000010000000101000100000001010100000000000100000100000000010101010000010001010101010001
- 觀察一下可以發現,而奇數位都是0,是多餘的,把這些去除掉。直接把00 替換成0,01替換成1
0100100101010011010001110111101101000101001101000111001101011001010111110101001101110100010001010110011100110100011011100011000001100111010100100011010001110000010010000111100101111101
- 發現長度是184,是8的倍數,轉換成ascii碼。
可以使用JPK工具來進行轉換,工具的下載的連結:
http://www.wechall.net/applet/JPK_406.jar
對比2.bmp可以發現隱藏了一些00 01這些資訊,複製出來
JPK——binary——binary to ascii 得到flag