[长城杯 2022]办公室爱情
复现过程如下:
-
先把
沃德.doc
复制到kali中,修改后缀名后为沃德.zip
,然后解压文件。 -
使用grep进行匹配
grep -irE "flag|==|10210897103|666c6167|464C4147|Zmxh|Wm14aFoz|f|58s4vb|2uk2h3|key|pass|pwd|password" --binary-files=without-match *
password1:True_lOve_
password12:i2_supReMe
得到password: True_lOve_i2_supReMe
- 使用
010editor
打开皮迪符.pdf
明显看到20 09 0D
特征,你往下面滑动的话,还能看见这种特征,这就是wbStego4
隐写,下面的图片是我之前写的总结(注明:我并不知道隐写的流程,不保证正确)
- 使用
wbStego4
,密码为上一步的True_lOve_i2_supReMe
。
得到密码this_is_pAssw0rd@!
- 使用上一步的密码
this_is_pAssw0rd@!
解压皮皮特的外套.zip
,打开皮皮特.pptx
,如下图:
观察了一下,基本就是很多颜色,组合在一起,看别人的WP的操作是,手动记录所有页的颜色,然后根据红橙黄绿青蓝紫
的顺序,替换为0~6
,然后7进制转10进制,然后转ASCII。
有点麻烦,我还是使用代码吧。
皮皮特.pptx
,修改后缀名后为皮皮特.zip
,然后解压文件,将下面代码放到皮皮特\ppt\slides\_rels
的文件夹中。
代码逻辑如下:
首先我看到了皮皮特\ppt\media
里面有8张图片,有红橙黄绿青蓝紫白
,我这边定义了一个颜色字典,image1~image8分别代表的颜色。
打开皮皮特\ppt\slides\_rels\slide1.xml.rels
可以看到../media/image1.png
,image1.png
的颜色为黄色,我们看ppt的第一页也是黄色,所以这个文件就和ppt看到的颜色是对应关系,所以代码就利用这一点,就可以得到每一页ppt的颜色。
最后一步就是7进制转10进制,再转ASCII就好了。
import re
color_dic = {
"image1": "黄", "image2": "红", "image3": "青", "image4": "白", "image5": "橙", "image6": "绿", "image7": "紫", "image8": "蓝"
}
color_str = ""
for i in range(1, 77):
file_path = f"./slide{i}.xml.rels"
with open(file_path, "r") as f:
data = f.read()
color_str += color_dic[re.findall('media/(.*?).png"', data)[0]]
maketran = str.maketrans("红橙黄绿青蓝紫", ''.join(str(i) for i in range(7)))
lis = color_str.translate(maketran).split("白")
lis.pop(-1)
for i in lis:
print(chr(int(i, 7)), end="")
运行截图:
flag{10ve_exCe1_!!!}