1.下载并解压文件
2.打开文件,发现英文开头都是一样的,数字不一样,打开其中一个zip包,发现里面的txt文件名称一样,这个时候大概率就要用到crc32脚本碰撞
3.crc32脚本内容
这里需要注意的是下图红色框里的内容,注释:
(0,53):表示的是下载文件夹中,一共有从0到53个zip文件
chunk:表示的是同样的zip文件同样的英文字母
data.txt:表示的是每个zip里面一样的data.txt文件
out.txt:表示将结果输出到out.txt文件,这个需要在同目录下建一个out.txt文件
完整版脚本:
import zipfile
import string
import binascii
def CrackCrc(crc):
for i in dic:
for j in dic:
for k in dic:
for h in dic:
s = i + j + k + h
if crc == (binascii.crc32(s.encode())):
f.write(s)
return
def CrackZip():
for i in range(0,53):
file = 'chunk'+str(i)+'.zip'
crc = zipfile.ZipFile(file,'r').getinfo('data.txt').CRC
CrackCrc(crc)
dic = string.ascii_letters + string.digits + '+/='
f = open('out.txt','w')
CrackZip()
print("CRC32")
f.close
如图,crc32脚本和输出文件要和zip文件放在同目录下
4.打开cmd命令行,输入切换路径命令,然后执行crc32脚本,出现CRC32时,则说明已经碰撞结束,可以打开out.txt文件查看
5.下图为crc32碰撞输出到out.txt文件的内容,可以看到是base64编码。由此需要用到base64解码工具,
1.out.txt内容
2.这里用到的是Notepad++,解码方式如下图,也可以用其他工具进行解码
3.在解码前先将原内容全选复制,然后在全选内容进行base64解码,再将原内容复制到解码后的内容后,不加的话会出现打不开,文件损坏的格式问题
4.上图的内容,点击【文件】--【另存为】
5.保存类型为:All types (*.*)
文件名为:out.zip
6.打开out.zip文件,发现需要输入密码
下载并使用Ziperello来暴力破解密码
7.输入密码,获取flag值
flag:flag{i_z1pp3d_a_zip_w1th_sum_zips}