记一道明文破解的漫长斗争史

相信不少看过我博客的朋友,都记得我曾经写过 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@}

相关文章
相关标签/搜索