题目
2024年春秋杯网络安全联赛冬季赛 - MISC - 压力大,写个脚本吧
https://www.ichunqiu.com/battalion?t=1&r=78931
解题思路
打开文件
发现一个压缩包一个txt文件
txt里有一串密文RkdGR0ZHRkdGR0ZHRkdGR0ZHRkdGR0ZHRkdGR0ZHRkdGR0ZHRkdGR0ZHRkdGR0ZH
对密文尝试解密,没有可疑信息
压缩包有密码,用密文解密试一下,并没有成功,用刚才密文解密的FGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFG作为密码,解密成功
反复用txt里的文件解密后,解密压缩包,都成功了,所以这就是这道题的规律,开始写脚本
脚本
参考大佬脚本:原文链接:https://blog.csdn.net/2303_76585504/article/details/145216675
批量解压
逐层解压所有压缩包的文件
importzipfileimportosimportbase64 current_dir=os.getcwd()foriinrange(99,0,-1):password_file=os.path.join(current_dir,f"password_{i}.txt")zip_file=os.path.join(current_dir,f"zip_{i}.zip")withopen(password_file,"r")asf:encoded_password=f.read().strip()password=base64.b64decode(encoded_password).decode("utf-8")withzipfile.ZipFile(zip_file)aszf:zf.extractall(path=current_dir,pwd=password.encode("utf-8"))合并密码
把所有的txt密码文件合并成一个txt进行分析
importosdefmerge_password_files(output_file="merged_passwords.txt",num_files=100):withopen(output_file,'w')asoutfile:foriinrange(num_files):file_name=f"password_{i}.txt"ifos.path.exists(file_name):withopen(file_name,'r')asinfile:outfile.write(infile.read()+"\n")else:print(f"{file_name}不存在")print(f"合并完成路径:{output_file}")对密码进行分析
初步分析
先对第一行密文进行Magic,发现应该是个PNG文件
密文带入
将merged_passwords.txt文件放入,识别出来是个二维码,扫码得到flag
答案
flag{_PASSWORDs%5Fis_fl@g!_}