日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

CTF压缩包加密破解总结

發布時間:2023/12/20 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CTF压缩包加密破解总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

加密zip包基本上只有三條思路:偽加密,爆破,明文思路

1.zip加密暴力破解、字典破解

ZIP壓縮方式支持密碼加密。加密的時候會在文件頭部保存密鑰相關信息。fcrackzip是Kali自帶的一款工具。它支持暴力破解和字典破解兩種模式。
該工具只支持ZIP壓縮文件,不支持RAR壓縮文件。因為這兩種文件使用不同的壓縮算法。

目錄 隱寫篇 0x01. 通過進制轉換隱藏信息 0x02. 在圖片中隱藏壓縮包(圖種) 加密篇 0x03. 偽加密 0x04. 爆破/字典/掩碼攻擊 0x05. 明文攻擊 0x06. CRC32碰撞 格式篇 0x07. 修改格式

0x01. 通過進制轉換隱藏信息
這種方法比較簡單,直接拿一道題講解(題目來自ISCC 2017 Basic-04)。題目給了一個txt文檔如下圖

經過觀察,所有數據都在16進制能表示的范圍之內,因此先嘗試使用十六進制編碼解密,python腳本如下:

運行結果如下,雖然存在大量亂碼,但還是能看到flag.txt,因此猜測txt中的這段字符是zip包的16進制表示(同時開頭的PK也暗示這是一個zip包,PK是zip格式發明者Phil Katz的名稱縮寫,zip的前兩個字母就用了PK)

將此16進制文件導入到16進制編輯器中,這里用010editor做演示

導入后選擇 Save As(快捷鍵 ctrl + shift + s),給新文件命名時加上后綴.zip,保存后發現zip文件是正常的,因此證明思路正確,

另:除了16進制的編碼轉換,有時還會遇到2進制編碼的轉換,思路相同,不再復述

0x02. 在圖片中隱藏壓縮包(圖種)
這種方法大概是zip中最常見的,多用于在一張圖片中隱藏一個壓縮包,這種方法的原理是:以jpg格式的圖片為例,一個完整的 JPG 文件由 FF D8 開頭,FF D9結尾,圖片瀏覽器會忽略 FF D9 以后的內容,因此可以在 JPG 文件中加入其他文件。
也以一道題為例為例(ISCC 2017 Basic-07),對于這種隱寫最簡單的方法是使用Kali下的binwalk進行檢測,binwalk 圖片名 如下,檢測出圖片中存在壓縮包

分離這個壓縮包利用Linux下的foremost工具, foremost 圖片名 如下,foremost默認的輸出文件夾為output,在這個文件夾中可以找到分離出的zip(推薦使用這種方法,因為foremost還能分離出其他隱藏的文件)
另:本題后續步驟為構造字典,爆破握手包
0x03. 偽加密
Zip偽加密與zip的文件格式有關(zip的格式詳解請翻到本文的最后0x07部分),zip中有一位是標記文件是否加密的,如果更改一個未加密zip包的加密標記位,那么在打開壓縮包時就會提示該文件是加密的。
對于偽加密有以下幾種方法:
1.在Mac OS及部分Linux(如Kali)系統中,可以直接打開偽加密的zip壓縮包
2.使用檢測偽加密的ZipCenOp.jar,解密后如果能成功打開zip包,則是偽加密,否則說明思路錯誤
3. 使用16進制編輯器改回加密標記位

以HBCTF的一道題講解這幾種方法:

如上,嘗試解壓壓縮包時提示有密碼,根據題干:比爆破更好的方法推測為偽加密,用三種方法來解此題:
1.用除windows外的系統直接打開壓縮包
在Mac OS和部分Linux系統(如Kali)中,右鍵解壓可直接打開偽加密的zip壓縮包,筆者暫未明確何種Linux能打開偽加密壓縮包,如有傳授,不勝感激!
2.使用ZipCenOp.jar(需java環境) 使用方法
經ZipCenOp.jar解密后的壓縮包可直接打開

3. 用16進制編輯器修改加密標記位

如上圖,修改加密標記位為00,保存,即可打開壓縮包(關于zip文件的結構,請翻到本文最末0x07部分)
0x04. 爆破/字典/掩碼攻擊
把這三種歸位一類是因為這三種方法在本質上都是逐個嘗試,只不過待選密碼的集合不同
1.爆破:顧名思義,逐個嘗試選定集合中可以組成的所有密碼,知道遇到正確密碼
2.字典:字典攻擊的效率比爆破稍高,因為字典中存儲了常用的密碼,因此就避免了爆破時把時間浪費在臉滾鍵盤類的密碼上
3.掩碼攻擊:如果已知密碼的某幾位,如已知6位密碼的第3位是a,那么可以構造 ??a??? 進行掩碼攻擊,掩碼攻擊的原理相當于構造了第3位為a的字典,因此掩碼攻擊的效率也比爆破高出不少
對這一類的zip問題,推薦windows下的神器AZPR
舉例如下:
1.對爆破,以ISCC 2017 Basic-08為例,選定暴力攻擊、字符集和長度后進行爆破
點擊開始,進行爆破,如下圖,在4ms內就找到了密碼為BIT

另:此題后續為簡單的base64解密;爆破在密碼長度小于6位時較快,因此如果在7位之內沒有爆破出結果時,基本就可以考慮換個方法了;此題的正規解法是培根密碼的轉換
2. 字典,還以之前的ISCC 2017 Basic-07舉例,從圖片中分離出一個加密的zip壓縮包,爆破無果后考慮字典攻擊(可從網上下載字典,但大多數題目需要自己構造字典,文末的網盤連接里提供了常見的字典)
3.
3.字典攻擊的結果如下圖,在字典選擇合適的情況下,用很短的時間就能找到密碼

4. 繼續以此題為例,解壓后的壓縮包有一個txt文檔和一個握手包,txt內容如下:
因此可知握手包的密碼為ISCC****的形式(*代表大寫字母或數字),自己寫程序構造字典

運行此程序得到字典如下:

之后用aircrack-ng來選中字典跑除握手包的密碼如下圖,不再詳述

掩碼攻擊,以ISCC 2017 Misc-06為例,題目給了一個jpg圖片,用0x02中的方法分離出加密的壓縮包,根據題目提示:注意署名, 構造???LiHua的掩碼(?可在自己定義的字符集中任意選擇)進行掩碼攻擊,如下圖:

攻擊結果如下,只耗費了很少的時間就找到了密碼

0x05. 明文攻擊
明文攻擊是一種較為高效的攻擊手段,大致原理是當你不知道一個zip的密碼,但是你有zip中的一個已知文件(文件大小要大于12Byte)時,因為同一個zip壓縮包里的所有文件都是使用同一個加密密鑰來加密的,所以可以用已知文件來找加密密鑰,利用密鑰來解鎖其他加密文件,更詳細的原理請讀者自行谷歌
舉個例子,已知 明文攻擊.zip 中存在的文件 明文.txt,
因此將 明文.txt 壓縮,這里需要判斷明文壓縮后的CRC32是否與加密文件中的一致,若不一致可以換一個壓縮工具。

攻擊過程如下:

點擊開始,很快就恢復了密碼

另:當明文的大小比較小時,攻擊速度會比較慢;即使有時沒有恢復密碼,也可以使用明文攻擊,最后點保存還是能得到壓縮包里內容的。
0x06. CRC32碰撞
CRC32:CRC本身是“冗余校驗碼”的意思,CRC32則表示會產生一個32bit(8位十六進制數)的校驗值。
在產生CRC32時,源數據塊的每一位都參與了運算,因此即使數據塊中只有一位發生改變也會得到不同的CRC32值,利用這個原理我們可以直接爆破出加密文件的內容
還是以之前HBCTF偽加密那道題為例,另一種解法就是CRC32碰撞,打開壓縮包,可以看出壓縮文件 flag6位數
的CRC32值為0x9c4d9a5d

因此寫出碰撞的腳本如下:

要特別注意

在 Python 2.x 的版本中,binascii.crc32 所計算出來的 CRC 值域為[-2^31, 2^31-1] 之間的有符號整數,為了要與一般CRC 結果作比對,需要將其轉為無符號整數,所以加上& 0xffffffff來進行轉換。如果是 Python 3.x 的版本,其計算結果為 [0, 2^32-1] 間的無符號整數,因此不需額外加上& 0xffffffff 。
腳本的運行結果如下,即為壓縮文件的內容:

再舉另一個bugku中的例子,下載下來的文件是68個壓縮包,并且根據binwalk的檢查結果,每個壓縮包里都有一個大小為4個字節,名為out.txt的壓縮文件

用如下的腳本碰撞出所有壓縮包中的數據:

此題較為繁瑣,之后的步驟不再展開
另:限于CPU的能力,CRC碰撞只能用于壓縮文件較小的情況

0x07. 修改格式
這種情況花樣較多,難以做一個詳細的總結,因此只列舉最常見的缺少文件頭或文件尾。
放一個zip文件格式講的較清楚的鏈接,通過對zip文件格式的了解,可以解釋之前偽加密的問題,同時也可以對缺少文件頭或文件尾有更直觀的認識。

如上為正常zip,缺頭zip和缺尾zip的binwalk掃描結果,根據掃描結果用16進制編輯器添加文件頭或文件尾,即可修復zip。
總結
Zip不僅是我們生活中常用到的一種文件格式,在CTF中也經常遇到,這里做了一個關于CTF中zip的總結,如果對讀者有幫助,鄙人不勝榮幸。

總結

以上是生活随笔為你收集整理的CTF压缩包加密破解总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。