1. 程式人生 > >CTF【每日一題20160610】

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 每日20160630PYTHON 位元組碼

python逆向基礎資源: 本題分析: 1.話說用python中的dis模組可以自己編個反編譯程式,但是我目前不會,就不羅嗦了。下載uncompyle2後,可以在終端進入uncompyle2目錄下,找到setup.py,就可執行下列命令執行安

CTF 每日20160607

啥? 2014-12-03 19:51:14 作者:admin 1765 86     誰能告訴我這是啥?答案又是啥。。 答案形式:wctf{你的字串} 答案:wctf{mianw

CTF 每日20160616windows、linux hash破解

這道題先考查一下系統常識:密碼存放的路徑(百度一下,你就知道),還提供了一個小工具。 一般情況下,windows密碼存放位置在: c:\windows\system32\config\SAM 下的SAM檔案中。sam是security account ma

CTF每日20160623dotNet逆向分析

.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):