如何破解压缩包密码,CTF压缩包处理

CTF压缩包处理技巧与实战演练
本文聚焦CTF比赛中的压缩包处理。先介绍常见压缩文件格式,如Zip和RAR的特征与加密情况。接着通过实战演练,讲解解决含压缩包CTF题目的方法,包括伪加密、暴力破解、明文攻击、CRC32碰撞、压缩包隐写及文件中隐藏压缩包的处理,助参赛者提升解题效率。

I. 引言

压缩包我们经常接触,用于对文件进行压缩存储/传输。压缩包处理在CTF比赛中是非常重要的一块,因为压缩包中可能包含重要信息:许多CTF题目会将关键信息隐藏在压缩包中,参赛者需要解压并查看其中的内容才能获取有用的线索。解密压缩是常见的CTF技能:参赛者需要掌握各种压缩文件格式的解压缩方法和工具,以及如何对压缩包进行加密和解密。压缩包处理可以提高解题效率:如果参赛者能够快速解压和查看压缩包中的文件列表和内容,就可以更快地找到关键信息,提高解题效率。对出题方而言,压缩包处理可以增加题目难度:如果一个CTF题目涉及到多个压缩包或复杂的加密算法,那么它会更加具有挑战性,考验参赛者的技术水平和耐心。

II. 常见的压缩文件格式

平时我们接触到的压缩包,主要有以下类型:zip格式、rar格式、7z格式、tar格式、gzip格式
其中zip和rar是最常见的其余7z、tar、gzip主要在linux上运行,出题常见于zip和rar,接下来我们简单介绍一下zip和rar两种压缩包

Zip压缩包:

典型特征后缀“.zip”,它的MIME格式为application/zip,zip压缩是一种有损压缩格式,即数据会因压缩而有损失,但是这种损失不会明显影响文件的质量。zip格式可以支持多种压缩算法,如存储、缩小、增强、最佳压缩等,可以根据不同的需求进行选择。zip压缩支持加密压缩。
在这里插入图片描述

特点1:数据记录格式:压缩源文件数据区+压缩源文件目录区+压缩源文件目录结束标志
压缩源文件数据库:[文件头+ 文件数据 + 数据描述符]
文件头: 50 4B 03 04 :这是文件头标记(0x04034b50),也可看到是“PK…”开头的
压缩源文件目录区为:50 4B 01 02
压缩源文件目录结束标志:50 4B 05 06
需要注意的加密点,每组四位数字,只和第二个数字有关系。
第二个数字为奇数时 –>加密
第二个数字为偶数时 –>未加密
① 无加密
压缩源文件数据区的全局加密应当为00 00 (50 4B 03 04两个bytes之后)
且压缩源文件目录区的全局方式位标记应当为00 00(50 4B 01 02四个bytes之后)

② 假加密
压缩源文件数据区的全局加密应当为00 00
且压缩源文件目录区的全局方式位标记应当为09 00

③ 真加密
压缩源文件数据区的全局加密应当为09 00
且压缩源文件目录区的全局方式位标记应当为09 00

RAR压缩包

典型特征“.rar”,rar 文件主要由标记块,压缩文件头块,文件头块,结尾块组成。
RAR 文件头 52 61 72 21 1A 07 00
RAR 文件尾 C4 3D 7B 00 40 07 00
伪加密:RAR的伪加密与ZIP的伪加密原理相同,号称伪加密的关键都是一个指定的位标记字段上。

PS:一般RAR伪加密的压缩包用WinRAR打开时都会显示文件头已损坏

在RAR的第24个字节,也就是010 Editor显示的文件结构中的ubyte PASSWORD_ENCRYPTED字段,修改其字段为1即可实现RAR伪加密。
第24个字节修改位1
或者修改第11个字节,也就是010 Editor显示的文件结构中的ubyte BLOCK_HEADERS_ENCRYPTED字段的值。修改为1即可造成RAR伪加密。
第11个字节修改为1
同理解法就是将其对应位置的值修改为0即可实现伪加密rar破解出来。不过一般rar在CTF中出现较少,重点还是zip的压缩包上面做文章。
了解了一些CTF中最常见压缩包格式,接下里我们分享一下如何做CTF题目。其实压缩包的题目,绝大多数是破解密码,其次是不全文件之类的提醒。

III. 实战演练:解决一个包含压缩包的CTF题目

3.1伪加密

这部分内容在第二章节里面已经讲述了,这里就不多累述了。

3.2 暴力破解

通常使用ARCHPR.exe工具来破解压缩文件,支持类型有zip、rar、ace、arj文件类型
使用场景:windows下加密过的压缩文件。
2.1. 攻击类型选择暴力破解,在范围位置根据提示选择暴力破解范围选项设置暴力破解包含的类型、开始于和结束于选项具体范围,如果没有定义则全范围暴力破解。建议使用1~9位的数字密码,以及系统自带的英文字典作为密码字典。
ARCHPR
进行一些简单的设置,这里不用多讲
暴力破解结果
再这个图里面我们就可以获取到暴力破解的结果,这个结果就是压缩包解密密码。

PS:这里的暴力破解只针对真正加密过的压缩文件,才能进行破解,破解的时间与加密密钥的复杂度有关。对于伪加密类型的压缩包是无法通过这个工具进行破解的。

3.3明文攻击

  • 明文攻击是指:加密的zip文件中你已经知道了这个ZIP加密文件中的七种一个或多个文件,推测出密钥并解密zip文件的攻击方法,相比与暴力破解,这种方法在破解密码较为复杂的压缩包时效率更高。
  • 对于zip文件来说,进行明文攻击的条件是:①有一个单独的文件已知且进行压缩之后的CRC值与某个包含此文件的压缩包的CRC值相等;②明文文件的压缩算法一定要和加密的压缩文件的算法一致
    +可以看到循环冗余位CRC有一致的
    如题:
    ACTF新生赛2020明文攻击
    1.在linux里面binwalk分离文件,但是失败了
    在010里面打开图片,,发现尾部存在一个flag.txt,但是缺少一个包头
    在这里插入图片描述2.复制完后加上 50 4B,变成一个新的压缩包11.zip,打开后里面有flag.txt
    在这里插入图片描述
    进行明文攻击,因为压缩包的大小不同,可以用winrar自动进行修复
    (因为flag.txt的crc32相同,但是压解压压缩包在asd文件夹中发现有good-已合并.jpg与qwe.zip两个文件,并且qwe.zip文件中flag.txt有密码,研究good-已合并.jpg,用steghide查看文件隐藏内容:steghide info filename缩后的大小都不同!而且res.zip包压缩后大小比较大)
    最后用archpr明文攻击跑出flag

总结:
第一步:接下来打开ARCHPR,攻击类型选择明文,明文文件路径选择“未加密的.zip”,即:将明文文件不加密压缩后的文件;
第二步:然后加密文件选择需要破解的zip文件夹;
第三步:选择要破解的文件,点击开始,破解成功后会获得密码;

3.4 CRC32碰撞

CRC本身是“冗余校验码”的意思,CRC32则表示会产生一个32bit (8位十六进制数)的校验值由于CRC32产生校验值时源数据块的每一个bit (位)都参与了计算,所以数据块中即使只有一位发生了变化,也会得到不同的CRC32值,总之每个文件都有唯一的CRC32值,即便数据中一个bit发生变化,也会导致CRC32值不同。若是知道一段数据的长度和CRC32值,便可穷举数据,与其CRC32对照,以此达到暴力猜解的目的。但通常只适用于较小文本文件。zip文件中crc32为未加密文件的校验码,比如这里有一个加密的压缩包,直接双击就可以看见其中信息,而且我知道其中全是数字,便可使用脚本爆破。注:需要linux环境
如题:
题目:MISC60
题目描述:宇宙的一切的答案就是32
1.解题分析
日常binwalk分析图片,发现有32.txt文件,内容如下:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Scalzdp

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值