【攻防世界】Misc文件类型

⭕、知识点
十六进制转ASCII/base64解码/zip文件格式

一、题目

二、解题
1、分析密文
一长串数字,长度为偶数,肯定想到先两两组合转化为ascii

2、编写脚本打印转化后的字母

3、观察发现开头有base64的倒序字符

4、尝试去掉开头提示部分并用base64解密

5、但是由于base64编码的数据长度应该是4的长度,所以为其填充2个 = 号,否则会有如下报错

b64decode
    return binascii.a2b_base64(s, strict_mode=validate)
           ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^
binascii.Error: Incorrect padding

6、base64解密后打印字符

很明显PK开头,为zip二进制文件

7、将二进制数据写入并保存为压缩包格式

8、解压得到flag

附脚本:

import textwrap
import base64

with open("cipher.txt", "r") as f:
    ciphertext = f.read()

hex_list = textwrap.wrap(ciphertext, 2)

text = ""

for e in hex_list:
    text += chr(int(e, 16))

print(text)
"""46ESAB_UEsDBBQAAAAIAAldCFXqOw7cKAAAACYAAAAIAAAAZmxhZy50eHRLy0lMrzZISk02SEwxTkk0MjQ0TjY3SDU1SEsxNTM0T7JINU"""

c = text[7:]

print(c)
"""UEsDBBQAAAAIAAldCFXqOw7cKAAAACYAAAAIAAAAZmxhZy50eHRLy0lMrzZISk02SEwxTkk0MjQ0TjY3SDU1SEsxNTM0T7JINU+zrAUAUEsBAhQAFAAAAAgACV0IVeo7DtwoAAAAJgAAAAgAJAAAAAAAAAAgAAAAAAAAAGZsYWcudHh0CgAgAAAAAAABABgAGxEfk9iq2AEbER+T2KrYAQJF+4rYqtgBUEsFBgAAAAABAAEAWgAAAE4AAAAAAA"""

# m = base64.b64decode(c)
"""没填充等号会报错"""

m = base64.b64decode(c+"==")

print(m)
""" b'PK.....' """


with open("flag.zip", "wb") as f:
    f.write(m)

三、答案
flag{0bec0ad3da2113c70e50fd5617b8e7f9}

四、总结
1、对于一串数字的密文考虑转为ascii,因为两个十六进制数最大仅能表示255,ascii字符表有128字符

2、对于不知用什么解密方式的未知编码,除了观察其字符特征,还要注意观察首尾有无提示信息(倒写、象形)

posted @ 2025-04-06 15:31  wyuu101  阅读(99)  评论(0)    收藏  举报