明文攻击

secrect.zip

解题思路:明文攻击->字频统计

hint提示:软件:7-zip

我还是试试了bandzip,2345压缩,其实还是不行,使用360压缩即可,7-zip应该也行,不过没下,桀桀桀

img

解压之后为1.txt进行字频统计即可

img

flag{EdCvGyTr@95173}

明文攻击

文件较大时,鉴于ARCHPR爆破时间一般不低于20分钟,所以一般不采用它进行明文攻击爆破

进行明文攻击时需要注意压缩算法不同,也会造成爆破失败

第二种解法:bkcrack进行爆破

bkcrack用法:

bkcrack -L 1.zip   //列出条目名称和数据
bkcrack -L E:\misc工具\bkcrack-1.6.1-win64\小明的日记本.zip

image-20241125213551022

bkcrack解出密钥:

bkcrack -C E:\misc工具\bkcrack-1.6.1-win64\小明的日记本.zip -c d.jpg -P d.zip -p d.jpg

image-20241125214047596

因此可以得出密钥是:de7fb7fe a8c68ae2 ddc4ba4b

到这里一般2步可以用ARCHPR来解,也可以用bkcrack来解,使用密钥解出,设置一个新的压缩包并将密码设置为kunkun

bkcrack -C E:\misc工具\bkcrack-1.6.1-win64\小明的日记本.zip -c d.jpg -k de7fb7fe a8c68ae2 ddc4ba4b -U kun.zip kunkun

例题:

谁偷吃了我的外卖【春秋杯】

下载附件得

img

binwalk尝试无果,选用foremost进行分离,得到压缩包

img

这里有许多外卖单及用户名

img

用户名中间的数据提取出来按照用户名顺序拼接起来,像是base64,但是base64的填充符号没有-,只有+/+这里有了,根据提示猜测把-替换成/,得到的解码是zip数据

import zipfile
import re
import base64

with zipfile.ZipFile("C:\\Users\jiang\\Desktop\\外卖箱.zip", 'r') as zf:
fileNameList = zf.namelist()
infoDict = {}
for fileName in fileNameList:
matchedData = re.findall(r'\d{1,}_[a-zA-Z0-9-+=\/]{4}', fileName)
if matchedData != []:
infoDict[matchedData[0][0:matchedData[0].find('_')]] = matchedData[0][matchedData[0].find('_') + 1:]
content = ''
for idx in range(2, 10898 + 1):
content += infoDict[str(idx)]
with open('C:\\Users\jiang\\Desktop\\data.zip', 'wb') as f:
f.write(base64.b64decode(content.replace('-', '/')))

代码分析

解压缩一个名为”外卖箱.zip”的文件,并从中提取特定文件的内容。解压后的文件内容按照特定的命名规则进行提取,并存储在一个字典变量infoDict中。然后,通过循环遍历字典中的内容,将特定文件的内容以base64编码的形式写入一个名为”data.zip”的文件中

放入010里发现文件头缺失,补全文件头

img

此时得到flag1

🌟 flag{W1sh_y0u_AaaAaaaa🌟

根据钥匙的提示,可以想到明文攻击

img

之后得到解密的压缩包

获取另一半flag

}9enruoj_FTC_1ufredn0w_aaaaaaa

逆序

aaaaaaa_w0nderfu1_CTF_journe9}

flag{W1sh_y0u_AaaAaaaaaaaaaaa_w0nderfu1_CTF_journe9}