CTF【每日一題20160610】
圖片中的英語
一恆河沙中有三千世界,一張圖裡也可以有很多東西。
不多說了,答案是這個圖片包含的那句英文的所有單詞的首字母。
首字母中的首字母要大寫,答案格式是wctf{一坨首字母}
加油吧少年!看好你哦~
-----------------------------------------------題目與答案的分界線-----------------------------------------
分析
這個題應該也是考察隱寫術的破解
png圖片的檔案頭一般為
檔案型別 |
檔案頭標識(HEX |
檔案描述 |
PNG |
89 50 4E |
|
PNG |
89 50 4E 47 |
|
png |
89 50 4E 47 0D 0A |
PNG Image File |
png |
89 50 4E 47 0D 0A 1A 0A |
PNG Image File |
用winhex開啟該圖片,的確前8位元組為89 50 4E 47 0D 0A 1A 0A。檔案中剩餘的部分由3個以上的PNG的資料塊(Chunk)按照特定的順序組成,因此,一個標準的PNG檔案結構應該如下:
PNG檔案標誌 |
PNG資料塊 |
…… |
PNG資料塊 |
PNG資料塊(Chunk)
PNG定義了兩種型別的資料塊,一種是稱為關鍵資料塊(critical chunk),這是標準的資料塊,另一種叫做輔助資料塊(ancillary chunks),這是可選的資料塊。關鍵資料塊定義了4個標準資料塊,每個PNG檔案都必須包含它們,PNG讀寫軟體也都必須要支援這些資料塊。雖然PNG檔案規範沒有要求PNG編譯碼器對可選資料塊進行編碼和譯碼,但規範提倡支援可選資料塊。
下表就是PNG中資料塊的類別,其中,關鍵資料塊部分我們使用深色背景加以區分。
PNG檔案格式中的資料塊 |
||||
資料塊符號 |
資料塊名稱 |
多資料塊 |
可選否 |
位置限制 |
IHDR |
檔案頭資料塊 |
否 |
否 |
第一塊 |
cHRM |
基色和白色點資料塊 |
否 |
是 |
在PLTE和IDAT之前 |
gAMA |
影象γ資料塊 |
否 |
是 |
在PLTE和IDAT之前 |
sBIT |
樣本有效位資料塊 |
否 |
是 |
在PLTE和IDAT之前 |
PLTE |
調色盤資料塊 |
否 |
是 |
在IDAT之前 |
bKGD |
背景顏色資料塊 |
否 |
是 |
在PLTE之後IDAT之前 |
hIST |
影象直方圖資料塊 |
否 |
是 |
在PLTE之後IDAT之前 |
tRNS |
影象透明資料塊 |
否 |
是 |
在PLTE之後IDAT之前 |
oFFs |
(專用公共資料塊) |
否 |
是 |
在IDAT之前 |
pHYs |
物理畫素尺寸資料塊 |
否 |
是 |
在IDAT之前 |
sCAL |
(專用公共資料塊) |
否 |
是 |
在IDAT之前 |
IDAT |
影象資料塊 |
是 |
否 |
與其他IDAT連續 |
tIME |
影象最後修改時間資料塊 |
否 |
是 |
無限制 |
tEXt |
文字資訊資料塊 |
是 |
是 |
無限制 |
zTXt |
壓縮文字資料塊 |
是 |
是 |
無限制 |
fRAc |
(專用公共資料塊) |
是 |
是 |
無限制 |
gIFg |
(專用公共資料塊) |
是 |
是 |
無限制 |
gIFt |
(專用公共資料塊) |
是 |
是 |
無限制 |
gIFx |
(專用公共資料塊) |
是 |
是 |
無限制 |
IEND |
影象結束資料 |
否 |
否 |
最後一個數據塊 |
為了簡單起見,我們假設在我們使用的PNG檔案中,這4個數據塊按以上先後順序進行儲存,並且都只出現一次。
PNG檔案中,每個資料塊由4個部分組成,如下:
名稱 |
位元組數 |
說明 |
Length (長度) |
4位元組 |
指定資料塊中資料域的長度,其長度不超過(231-1)位元組 |
Chunk Type Code (資料塊型別碼) |
4位元組 |
資料塊型別碼由ASCII字母(A-Z和a-z)組成 |
Chunk Data (資料塊資料) |
可變長度 |
儲存按照Chunk Type Code指定的資料 |
CRC (迴圈冗餘檢測) |
4位元組 |
儲存用來檢測是否有錯誤的迴圈冗餘碼 |
IEND
影象結束資料IEND(image trailer chunk):它用來標記PNG檔案或者資料流已經結束,並且必須要放在檔案的尾部。
如果我們仔細觀察PNG檔案,我們會發現,檔案的結尾12個字元看起來總應該是這樣的:
00 00 00 00 49 45 4E 44 AE 42 60 82
不難明白,由於資料塊結構的定義,IEND資料塊的長度總是0(00 00 00 00,除非人為加入資訊),資料標識總是IEND(49 45 4E 44),因此,CRC碼也總是AE 42 60 82。
用winhex開啟圖片,找49454E44,發現一個IEND塊,而後面追加了一個有趣的東西:Rar,還有flag.jpg,我猜後面加了一個rar的壓縮包,裡面還有個jpg檔案。RAR檔案頭標誌是:52 61 72 21。
還可以用kali下的binwalk查一下,把圖片(6.png)存到Pictures檔案裡,在terminal中輸出binwalk6.png
看到後面有RAR檔案吧,那麼怎麼解出來?
可以用winhex,在RAR檔案頭標誌52 61 7221處設定“begin of block”,然後在檔案末尾設定”end of block”,意思是選中這些資料,點edit裡的copy block into new file,檔案字尾名為rar即可。
解壓rar後有flag.jpg,在winhex中開啟它看一下。
Jpg檔案格式標誌位:
jpg; jpeg |
FF D8 FF |
|
jpg; jpe; jpeg |
FF D8 FF E0 00 |
JPG Graphic File |
jpg; jpe; jpeg |
FF D8 FF FE 00 |
JPG Graphic File |
發現這個flag.jpg裡面沒有明文key,可能是用到更高階的隱寫術。用binwalk也沒發現什麼。
上面說到的隱藏方式,是利用了增加資料的方式,把資料直接增加在了jpg後面。還有另一類隱藏的方法,就是利用了修改資料的方式來隱藏自己傳遞的資訊。
一種常見的方式是利用LSB來進行隱寫,LSB也就是最低有效位 (Least Significant Bit)。原理就是圖片中的像數一般是由三種顏色組成,即三原色,由這三種原色可以組成其他各種顏色,例如在PNG圖片的儲存中,每個顏色會有8bit,LSB隱寫就是修改了像數中的最低的1bit,在人眼看來是看不出來區別的,也把資訊隱藏起來了。譬如我們想把’A’隱藏進來的話,如下圖,就可以把A轉成16進位制的0x61再轉成二進位制的01100001,再修改為紅色通道的最低位為這些二進位制串。
如果是要尋找這種LSB隱藏痕跡的話,有一個工具是個神器,可以來輔助我們進行分析。Stegsolve這個軟體的下載地址是
http://www.caesum.com/handbook/Stegsolve.jar
開啟之後,使用Stegsolve——Analyse——Frame Browser這個可以瀏覽三個顏色通道中的每一位,可以在紅色通道的最低位,發現一個二維碼,然後可以掃描得到結果。
但是這個題,你用stegsolve還是不行。它只有1幀,看來不是疊加型的隱寫術。
資料在隱藏的時候,我們常常是需要先分析是資料隱藏在哪裡,也就是他在利用是什麼做載體,之後才可以進一步的分析是加密或編碼的。這也就是說我們要對一個圖片的格式要有了解,才能知道哪些地方是可疑的,哪些是可以隱藏起資訊的,會有冗餘的成分在。舉個例子吧,比如給了一個jpg的圖片。除了我們之前說到的隱藏在結束符之後的資訊,jpg圖片還可以把資訊隱藏的exif的部分。exif的資訊是jpg的頭部插入了數碼照片的資訊,比如是用什麼相機拍攝的。這些資訊我們也是可以控制的,用檢視屬性的方式可以修改一部分的資訊,還可以用exif編輯器來進行編輯。Power_exif這個可以用來編輯。
但這個圖,開啟屬性視窗,也沒什麼特別的。
總的來說,這圖片怎麼分析都沒有收穫。
最後百度一下,結果發現是大笑江湖的一句臺詞:May the force be with you。題目中又有提示:答案是這個圖片包含的那句英文的所有單詞的首字母,首字母中的首字母要大寫。答案呼之欲出了~。所以做題有時候可能用的不是純技術。
答案:wctf{Mtfbwy}
相關推薦
CTF【每日一題20160610】
圖片中的英語 一恆河沙中有三千世界,一張圖裡也可以有很多東西。 不多說了,答案是這個圖片包含的那句英文的所有單詞的首字母。 首字母中的首字母要大寫,答案格式是wctf{一坨首字母} 加油吧少年!看好你哦~ --------------------------------
CTF 【每日一題20160630】PYTHON 位元組碼
python逆向基礎資源: 本題分析: 1.話說用python中的dis模組可以自己編個反編譯程式,但是我目前不會,就不羅嗦了。下載uncompyle2後,可以在終端進入uncompyle2目錄下,找到setup.py,就可執行下列命令執行安
CTF 【每日一題20160607】
啥? 2014-12-03 19:51:14 作者:admin 1765 86 誰能告訴我這是啥?答案又是啥。。 答案形式:wctf{你的字串} 答案:wctf{mianw
CTF 【每日一題20160616】windows、linux hash破解
這道題先考查一下系統常識:密碼存放的路徑(百度一下,你就知道),還提供了一個小工具。 一般情況下,windows密碼存放位置在: c:\windows\system32\config\SAM 下的SAM檔案中。sam是security account ma
CTF【每日一題20160623】dotNet逆向分析
.NET逆向第一題 嗯,看名字就應該明白了,快去下載吧! 下載後是一個DotNetCrackMe1.exe檔案。 分析 逆向分析的基礎問題,可以參考以下資源列表 豆瓣逆向分析基礎總結
CTF 【每日一題20160626】簡單的PE檔案逆向
剛接觸,不明白PE為何物或逆向分析不甚明瞭的同學,請參考下列文章: 本題解析: 1.言歸正傳,我下載的pecrackme1.exe,在windows xp下執行沒有結果,所以無法像文章:http://blog.csdn.net/calmegm/a
CTF 【每日一題20160627】簡單的ELF逆向
下載後是一個名為ElfCrackMe1的檔案。 初級指南: 本題分析: 上次是windows下的PE格式可執行檔案,這次是LINUX下的EFL格式可執行檔案。分析和除錯用IDA PRO,看了《the IDA pro book》你就全明白了。
CTF【每日一題20160609】
1. 摩斯密碼 嘀嗒嘀嗒嘀嗒嘀嗒時針它不停在轉動 -- --- .-. ... . 嘀嗒嘀嗒嘀嗒嘀嗒小雨它拍打著水花 -.-. --- -.. . PS:答案格式wctf{你所知道的} --------------------------------
CTF 【每日一題20160618】簡單xss示例
繼續黑客遊戲 第五關 複雜的文字遊戲 點一下have a try 下面一行後那個回車 並有彈出訊息框 分析: 這是要考XSS,右側還提示“會用錯誤控制檯麼?”,這個是提示用chr
CTF【每日一題20160608】
簡單程式設計-字元統計 你會看到題目,要快速提交答案哦,重新整理後內容會變,所以編個程式讀網頁,再計算。 -------------------------------------------------------------------------------
CTF【每日一題20160618】挖掘規則裡面的漏洞
繼續黑客遊戲第四關,逆向解密 下載後開啟看到一個“空白”的pdf文件。由於對pdf加解密相當無知,所以百度一下,有人這樣回答: “有幾種可能性: 一、文件本來就是空白。 很多垃圾網站或軟體,通過
CTF【每日一題20160614】
—————問題與答案的分界線—————— 分析: 題目上沒有什麼價值資訊,果斷看網頁原始碼。發現中間有一段指令碼: ...... <input type="password"
CTF【每日一題20160615】
分析 1. 看頁面中右側有“提示在這裡”似乎可以點選,但沒有響應 2. 檢視網頁原始碼(老套路),發現點選連結tip/nozend.php被註釋了 <div class="lv
CTF【每日一題20160611】
紅與黑 請給出你能從圖片中找到的flag 答案形式:wctf{你的答案} --------------------------------------------------------------------------------------------------
CTF 【每日一題20160606】
------OPEN Ur EYES------- -----fence=2------ t jfia e,wtn ,p tesgu hqke{, uooawmieene.nctswlkshib gnt tsf}au mi c nhiusrzibcsrn -----fence=3------ tcfw
【每日一題(33)】 敵兵佈陣 HDU-1166(線段樹)
前言 這是趙神5個月前佈置的一道題目,VJ上顯示第一次提交記錄是2017-11-02 22:36:53 當時還年輕,以為這個題不難,直接就暴力求解,現在發現太年輕了,線段樹+string都TLE 五個月前,對線段樹最深的瞭解就是西工大
【每日一題(34)】Halloween Costumes LightOJ-1422
Gappu has a very busy weekend ahead of him. Because, next weekend is Halloween, and he is planning to attend as many parties a
【每日一題+二維線段樹】HDU - 4819 Mosaic
【每日一題+二維線段樹】HDU - 4819 Mosaic 【題意】 給出一個nn的矩陣,查詢以(x,y)為中心,長度為ll的矩陣中的最大值和最小值,將中心元素替換為floor( (max+min)/2 ) 【思路】 二維線段樹模板 # include<cstdio&g
【每日一題】獎金問題
一:問題描述 二:問題分析 涉及資料:利潤profit,獎金bonus 資料間的關係:當profit<=10w,bonus = pro
【每日一題】
題目:有1、2、3、4個數字,能組成多少個互不相同且無重複數字的三位數?都是多少? 程式碼: num = 0 for i in range(1,5): for a in range(1,5): for b in range(1,5):