記一道明文破解的漫長鬥爭史

相信不少看過我博客的朋友,都記得我曾經寫過 Zip 加密文件破解的文章,若是有沒看過的讀者朋友們參看這裏:https://www.cnblogs.com/ECJTUACM-873284962/p/9387711.htmlhtml

裏面提到了明文攻擊的手法,當時我作了一下 15 年強網杯的爆破?,我當時經過 ARCHPRpkcrack 兩種手段均未成功破解壓縮包,上網找相關的 writeup ,未果,我也不知道爲啥沒成功,時隔三個月,我再次嘗試的時候,今早 0:00 的時候,成功地跑出了答案,欲哭無淚~~只能說出題人太過度了,居然埋下了這個坑。git

做爲一個目前還在役的 CTF 選手,我會給你們講解一些有意思的賽題啊,講解我是如何踩坑的,我又是如何繞過這個坑的。一方面是自個人總結,一方面也是給你們一點學習思路,如何去分析一道賽題,我不會去重複的解讀一些基礎知識,更多的基礎知識請參看 ctf-wiki 上面的內容,目前我是主要負責維護 WebMisc 部份內容。本文也會在後續同步更新到 ctf-wiki 上,固然也歡迎你們一塊兒來 Contributegithub

ctf-wiki 地址:https://ctf-wiki.github.io/ctf-wiki/算法

本文給你們帶來的賽題是來自 15 年強網杯的爆破?shell

賽題地址爲:https://static2.ichunqiu.com/icq/resources/ctf/qwb/6005400ffa8ecd5053ab56d0f868d198.zipbash

測試環境工具

本題我將會從 WindowsLinux 兩個系統環境下講解如何去解決這個問題,咱們須要用到的實驗環境有:學習

  • Windows 10 家庭版
  • ARCHPR 4.53
  • Ubuntu 18.04
  • pkcrack 1.2.2

賽題分析

首先咱們拿到這樣一道題,題目標題爲爆破?,很明顯這題確定是要用到一個破解工具,很暴力的說。測試

第一步、分析壓縮包文件

咱們下載了這個壓縮包之後,咱們看到文件名是 *.zip 結尾,咱們能夠當即想到破解壓縮包經常使用的幾種方式,我在博客上都有寫過這些,具體參考原文:https://www.cnblogs.com/ECJTUACM-873284962/p/9387711.html。加密

咱們將其壓縮包解壓出來,發現裏面有兩個文件,分別爲 Desktop.zipreadme.txt ,咱們看看 readme.txt 裏面寫了什麼?

readme

打開之後居然是qianwanbuyaogeixuanshoukandao!!! ,出題人不想讓選手看到,這出題人仍是有點意思。咱們再看看那個 Desktop.zip ,咱們能夠看到裏面有個 readme.txt 文件和 answer 文件夾, answer 文件夾下有 key.txt 文件, flag 應該就藏在這裏了。

第二步、分析破解方式

這題目拿到手上,咱們首先發現解壓出來的文件和Desktop.zip壓縮包中都含有一樣一個文件 readme.txt ,並且並無給出其餘相關信息,且文件大小大於 12Byte ,咱們再對比壓縮包中的 readme.txt 和原壓縮包中的 readme.txtCRC32 的值,咱們發現兩個值相同,這說明解壓出的 readme.txt 是加密壓縮包裏的 readme.txt 的明文,因而咱們能夠大膽地猜想這很可能是個明文加密。

第三步、嘗試明文攻擊

既然咱們已經知道了它是明文攻擊的話,咱們將對其壓縮包進行破解,因爲解壓出的readme.txt是加密壓縮包裏的 readme.txt 的明文,將 readme.txt 壓縮成 .zip 文件,而後在軟件中填入相應的路徑便可開始進行明文攻擊,這裏咱們將介紹 WindowsUbuntu 下使用不一樣的方式進行明文攻擊。

方法1、 pkcrack 進行明文攻擊

pkcrack 下載連接:https://github.com/flag-porter/CTF-Tools/blob/master/Tools/Crypto/pkcrack/install

咱們能夠直接寫個 shell 腳本下載就行了:

#!/bin/bash -ex

wget https://www.unix-ag.uni-kl.de/~conrad/krypto/pkcrack/pkcrack-1.2.2.tar.gz
tar xzf pkcrack-1.2.2.tar.gz
cd pkcrack-1.2.2/src
make

mkdir -p ../../bin
cp extract findkey makekey pkcrack zipdecrypt ../../bin
cd ../../

把文件保存,改成 pkcrack-install.sh ,而後跑到當前目錄下,給它加一個執行權限 x

chmod 777 install.sh

或者直接能夠:

chmod u+x install.sh

而後運行 ./pkcrack-install.sh

而後當前目錄下會生成一個 bin 的文件夾,咱們直接進入 bin 文件夾下,看到有 pkcrack 文件,直接對文件進行明文破解。

./pkcrack -c "readme.txt" -p readme.txt  -C ~/下載/misc/Desktop.zip -P ~/下載/misc/readme.zip -d ~/decrypt.zip

咱們所用到的參數選項以下:

-C:要破解的目標文件(含路徑)

-c:破解文件中的明文文件的名字(其路徑不包括系統路徑,從zip文件一層開始)

-P:壓縮後的明文文件

-p:壓縮的明文文件中明文文件的名字(也就是readme.txt在readme.zip中的位置)
-d:指定文件名及所在的絕對路徑,將解密後的zip文件輸出

至於其餘選項參看 ./pkcrack --help

解密後的結果以下:

咱們能夠看到,咱們下午 1:10 開始跑的,下午 3:27 才求解出祕鑰。

咱們得出了最終的flag爲:flag{7ip_Fi13_S0m3tim3s_s0_3a5y@}

坑點來了

看起來一切都很順利的樣子,一樣花了兩個多小時,爲啥我在博客園上寫了我跑了兩個小時都沒跑出來呢?或者說有朋友遇到了和我同樣的問題,我明明和你是同樣的,爲啥我跑不出結果?

大家可能忽略了一些細節問題,有人曾想過原壓縮包是經過什麼方式壓縮的嘛?還有就是咱們生成的 readme.zip 又該以哪一種方式去生成呢?我就是由於這個問題卡了整整三個月沒作出來,不信的話咱們能夠看看第二種方法,在 Windows 下用 ARCHPR 進行明文攻擊。

方法2、ARCHPR進行明文攻擊

首先這題我建議你們下 ARCHPR 4.53 版本,我是在這個版本下測試成功的。成功截圖以下:

我相信不少朋友在用 ARCHPR 的時候遇到如下這種狀況:

我當時心裏是崩潰的,爲啥會出現這種狀況。

在後來的學習中發現,用 7z 壓縮的文件得用 7z 來解壓縮, 7z 是一種使用多種壓縮算法進行數據壓縮的檔案格式,和傳統的 ziprar 相比,它的壓縮比率更大,採用的壓縮算法不一樣,天然而然就可能出現不匹配這種狀況,因此咱們在解壓縮原壓縮包和對文件進行加密的時候得先分析出題人是用什麼方式進行加解密的,因此這題的問題顯而易見就出來了,通過驗證,我發現出題人是用 7z 進行壓縮的。

再嘗試

咱們已經發現了這個問題,咱們去官網下載 7zip :https://www.7-zip.org/

而後咱們對原壓縮文件用 7z 進行解壓縮,而後將 readme.txt 用7z進行壓縮便可。而後咱們就能夠用 ARCHPR 進行明文攻擊了。

結果以下:

咱們將 Desktop_decrypted.zip 解壓出來,查看 answer 目錄下的 key.txt 便可。

因此最終的flag爲:flag{7ip_Fi13_S0m3tim3s_s0_3a5y@}

相關文章
相關標籤/搜索