打开压缩包查看,发现flag.zip,发现是加密文件,且有备注是一串字母,猜测是加密后的密码,尝试解密无果,查看其它信息
010Editor打开其他任意一个文件查看信息
发现均为jpg文件,为文件添加后缀.jpg(由于文件过多,所以使用ren(rename)指令进行更改)
注意:这里的指令使用通配符,所以flag.zip也改为.jpg后缀,记得要手动改回去
发现这些jpg文件为二维码的碎片,使用ps进行拼接,但这些图片都是乱序的,尝试找找还有没有信息,使用010Editor打开jpg,发现每个文件末尾都有一个数字,猜测这些数字代表二维码的顺序,匹配二维码左上,右上的碎片,发现确实如此,使用脚本将文件名改为序号
import os
# 获取目录下文件名列表
dir_list = os.listdir('./attachment')
# 从列表中依次读取文件
for file in dir_list:
if '.jpg' in file:
f = open('./attachment/' + file, 'rb') # 使用二进制打开文件,此处注意attachment后'/',不加'/',将找不到文件
n1 = str(f.read()) # 读取文件
n2 = ''
# 这里是尝试后发现最后一位为单引号,对于序号为一位数的文件倒数第三位为9,所以限制条件
if '1' <= n1[-3] <= '3':
n2 += n1[-3]
if '0' <= n1[-2] <= '9':
n2 += n1[-2]
f.close() # 先关闭文件才能重命名,否则会报`文件被占用`错误
os.rename('./attachment/' + file, n2 + '.jpg') # 重命名文件
得到排序后的jpg
然后将这些图片导入ps,拼接即可,得到完整二维码,此处鉴于我开始时不会拼接图片,所以简单说明一下
打开ps后新建照片,随便选个尺寸都行
更改画布大小,尽量大些,一会要足够拼接二维码
然后将图片全部选中直接拖拉到ps中,然后会生成36个图层,这些图层全在画布中心重叠,使用选择工具就可以移动位置,根据序号将二维码碎片按序拼接就好
拼接后得到的二维码见下图
使用QRResearch得到信息,是压缩包密码的编码顺序,反过来将zip的备注字母段依次使用base32,base16,rot13,base85,base64,base85解码(这里注意13指的是rot13,base编码中没有base13),得到压缩包密码“ThisIsSecret!233”
GNATOMJVIQZUKNJXGRCTGNRTGI3EMNZTGNBTKRJWGI2UIMRRGNBDEQZWGI3DKMSFGNCDMRJTII3TMNBQGM4TERRTGEZTOMRXGQYDGOBWGI2DCNBY
解压成功,得到flag
参考文章