🕊️祥云杯2021-鸣雏恋🕊️

写在前面

祥云杯是之前比较久的比赛了(一个多月了吧),最近比较忙,没什么时间更新文章(摸摸鱼),这几天翻翻自己的wp库,发现有跟多还没有发布,乘此机会恢复更新。

关于祥云杯

祥云杯可能大家都听说过,也知道这个比赛的难度不是那么高,刚好我们学校要自己搞个比赛平台,我就把难度等级不高的题整理出来,第一方便大家看,第二方便我后期使用。

题目信息

在喜欢的人面前,我可不能……丢脸啊……因为我,喜欢鸣人君………… 题目下载链接:https://pan.baidu.com/s/1JtP-2VjU0iwOr03mf5nx_g提取码:GAME (自有链接,永久有效)

开始解题

1、解压下载的压缩包,是个doc文件,打开看到一行字,一般这种doc的题,我给大家分享几个方向,空格隐写、文件头、属性中的备注,一般就是这几个方向。

2、用010打开看看,一眼就是pk,直接改后缀zip解压。

3、解压后在 _rels下发现一个压缩包、key.txt文件,打开key.txt文件。

4、根据勇往直前提示,可能攻克点就在当前目录,打开压缩包发现有129488张图片。(打开会卡,稍等就好)

5、观察图片大小,发现大小是拥有规律的,联想到二进制,猜测图片大小为279的对应0,图片大小为452的对应1,根据思路写出脚本。

算法的大致思路如下:

  • 先提取压缩包内的所有文件名和文件大小

  • 因为zipobj.namelist()文件列表中的文件名不是按递增排序的,所以需要先将文件名和文件大小提取到另一个列表内

  • 第一条数据是空的需要删除

  • 这个大列表内存在着许多的小列表,每个子列表代表一个文件,子列表的第一个元素是文件名称,第二个元素是文件大小

  • 因为文件名称是以out/名称为格式的,所以需要删除后缀和out/字符串,保留数字后再转换成数字类型

  • 使用sorted()函数对大列表进行递增,如果列表的元素都为列表时,默认会按每个子列表的第一个元素递增排序

  • 之后的操作就是将文件大小替换成0和1,每8位二进制就转换成十进制,然后再从十进制转换成ASCII码对应的字符

  • 最后把字符结果写入文件

import zipfile
lis = []
result = ""
data = ""
size = 1
with zipfile.ZipFile('love.zip', 'r') as zipobj: #读取压缩包
    for file_name in zipobj.namelist(): #遍历名称
        info = zipobj.getinfo(file_name)
        file_name = file_name.encode('cp437').decode('gbk')
        lis.append([file_name,info.file_size])
# print(lis)
del lis[0]
for i in range(len(lis)): #处理文件名和数据
    lis[i][0] = lis[i][0].replace("out/","")
    lis[i][0] = lis[i][0].replace(".png", "")
    lis[i][0] = int(lis[i][0])
    if lis[i][1]==262:
        lis[i][1]='0'
    else:
        lis[i][1]='1'
# print(lis)
lis = sorted(lis)
# print(lis)
for i in range(len(lis)):
    data += lis[i][1] #数据大小
    if len(data)%8==0: #集齐八位二进制时
        result+=chr(int(data,2))
        data=""
with open("2.txt","w") as fp:
    fp.write(result)

6、将脚本和love.zip放到同一目录下运行脚本,得到2.txt。

7、根据 data:image/png;base64 可知这是一个base64形式的图片,我们使用脚本将其转化为图片。(删除data:image/png;base64,)

import os, base64

with open("1.txt", "r") as f:
    imgdata = base64.b64decode(f.read())
    file = open('1.jpg', 'wb')
    file.write(imgdata)
    file.close()

8、运行脚本得到图片,下面就是flag。

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注