2025-nss-round29-misc


misc

27262524

拿到一个加密嵌套压缩包,直接爆破

发现密码是272727,做misc多了,直接敏锐察觉接下来的密码就是文件名重复三次了,写一个脚本

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import os
import pyzipper
from queue import Queue

def extract_zip(zip_path, output_dir):
    try:
        basename = os.path.basename(zip_path)
        filename = os.path.splitext(basename)[0]
        password = filename * 3  # 密码为文件名重复三次

        with pyzipper.AESZipFile(zip_path) as zf:
            zf.extractall(path=output_dir, pwd=password.encode('utf-8'))
            print(f"[+] 解压成功: {zip_path}")

        new_zips = []
        for root, _, files in os.walk(output_dir):
            for file in files:
                if file.endswith(".zip"):
                    new_zips.append(os.path.join(root, file))
        return new_zips
    except Exception as e:
        print(f"[-] 解压失败: {zip_path}, 错误: {str(e)}")
        return []

# 其余代码与原始脚本相同


def main():
    initial_zip = r"D:\网安题文件\27.zip"  # 初始ZIP路径
    output_dir = r"D:\网安题文件"  # 输出目录

    # 确保输出目录存在
    os.makedirs(output_dir, exist_ok=True)

    # 使用队列处理所有ZIP文件(广度优先遍历)
    processed = set()  # 已处理文件集合(避免重复)
    queue = Queue()
    queue.put(initial_zip)

    while not queue.empty():
        current_zip = queue.get()
        if current_zip in processed:
            continue
        processed.add(current_zip)

        # 解压并获取新生成的ZIP文件
        new_zips = extract_zip(current_zip, output_dir)
        for zip_file in new_zips:
            queue.put(zip_file)

    print("[*] 所有ZIP文件已处理完成!")


if __name__ == "__main__":
    main()

这里我遇到一个坑,一开始我直接解压显示错误,后面banzip解压可以,但是代码解压也不行,后面了解是加密算法有点坑

这个加密算法是AES,而我代码一开始是用Python内置的zipfile模块,仅支持传统的 ZipCrypto 加密,后面换成 pyzipper模块就欧克。得到图片

foremos提取了一张二维码

直接微信扫码得到flag

NSSCTF{The_competition_has_so_far_held_26_rounds}

补充一句,这里的二维码其实反相了,按道理要用

https://uutool.cn/img-color-reverse/

这个网站恢复,然后再用QR扫,但是微信扫码比较强,直接出。

JOJO

题目给了一张图片,随波一把梭没用

丢进010看看

发现这里把zip文件头50删了,那我们直接加上。然后binwalk分离,得到一个压缩包,里面有一张图片

然后放随波逐流,发现还藏了压缩包,直接binwalk分离。然后发现是个加密压缩包,而且看起来像伪加密,但是其实不是。所以要找密码,爆破爆不出,那就是藏在哪里了。

这张图片放随波逐流时发现crc不对

想到可能宽高不对劲,用模板改一下宽高(快捷键Alt+4)

高改成1800就可以看到密码:DarkWill(有些题可以到字符但是乱码,就要爆破宽了)

解压是txt,里面是一大串字符,那不用想就是套娃

一眼base16编码

解码以后一眼凯撒加密,偏移量慢慢试,不想试可以取前面一小段放到随波梭哈看看偏移量

解密后一样base64转图片(注意去掉前面的world),然后丢随波逐流,发现有zip,然后又分离得到一个压缩包

一眼伪加密,09改成00后打开,flag就在里面

总结:此题套娃,出题人接受拷打,难点:出题人防随波逐流,比如第一个要补全压缩包,要利用模板!第二个难点就是补全图片宽高,需要比较敏感。题目知识点不难,但是很难一下想到,还是要多用模板!下班。

东北jail

谢谢观看