题目地址:NSSCTF
昨天注意到的时候比赛就剩两个小时了.......
拿到一个压缩包,里面有一个图片,解压。用winhex观察数据底部,发现有类似于压缩包的数据。
把他放到binwalk后者foremost里面分离,参数分别是: binwalk -e 文件名 foremost -T 文件名
分离完之后得到一个有密码的压缩包,猜测是弱密码直接放到ARCHPR里爆破
压缩包密码为:haida,将文件解压,发现解压出来的文件报错了。拖到winhex里面看。
这个数据是每个字节内都颠倒了一下,如前四个字节原本应该是50 4B 03 04,这个压缩包的名字也给我们了提示,所以只要写个脚本让他们在字节内再次颠倒回去就行了。
# 定义需要输出的数据
data = "文件的十六进制数据"
# 将字符串格式的数据按照每两个字符为一组切割成列表
data_list = [data[i:i+2] for i in range(0, len(data), 2)]
# 打开文件,并写入数据
with open('flag.txt', 'w') as f:
# 循环输出每两个字符,并颠倒顺序,并将结果写入文件
for d in data_list:
# 颠倒顺序
d_reversed = d[::-1]
# 将结果写入文件
f.write(d_reversed + '\n')
他会创建一个新的文件,下的文件里存放着颠倒后的十六进制数据,需要注意的是,处理前和处理后的数据都要经过在线网站的去空格和换行符这也是这个脚本的不足之处。
在线去空格换行的网站:在线文本去空格-删除文档字符串制表符回车 - 工具啦
得到这样一个压缩包:
注意,这个压缩包里面存在伪加密,需要先去除伪加密,再进行密码爆破。密码:9724。 里面的Plian.zip藏着flag,需要用secre.zip对它进行明文攻击。(需要将ARCHPR的模式改为明文攻击)时间比较长,耐心等待
密码:w98d@ud
输入密码,解压文件拿到flag:HDCTF{u_a_a_master_@_c0mpRe553d_PaCKe1s}