这是一道ctf的misc题,打开rar压缩包后,有两个文件,用这个python文件能运行出来压缩包的...
创建于:2026年5月6日
使用 GPT-5.5 Thinking 回答 Chat01
创建于:2026年5月6日
使用 GPT-5.5 Thinking 回答 Chat01
这是一道ctf的misc题,打开rar压缩包后,有两个文件,用这个python文件能运行出来压缩包的解压密码和一个rar5的压缩包,打开压缩包有flag.txt,但是里面的flag不对,flag的格式为ISCC{}
题目名为扭曲的真相
提示为一位数学大师在失踪前留下了两个神秘的数据文件。他在笔记中写了一段谶语:“四位成组,拆骨分藏。纵向拾取,各归其行。零壹铺路,字符浮光。四言成谶,水落石方。”你能解开藏在其中的秘密,找到扭曲的真相吗?
还有一个提示可能是有关flag.txt的提示为分层隐写、转换即颠倒。
我这边从你上传的包里确认了第一阶段:
secret.dat 的解法不是按“四位一组”横着读,而是每个 hex 字符拆成 4 个 bit-plane,再分别按 8 bit 还原。得到:
textplane 0: 取一个长方形纸带,将其末端翻转与首端粘合后,可以在现实世界中得到莫比乌斯环。 plane 1: ”起点“亦或”终点“。 plane 2: 它的曲面在三维空间中被扭曲嵌入,蚂蚁实际上需要爬行两圈的长度才能真正返回三维视角下的同一出发点,这种返回既是空间上的也是方向上的反转。 plane 3: The key is WXRoOVVyMDYyYXpaQTA5eTRyczVM
base64 解出来的密钥是:
textYth9Ur062azZA09y4rs5L
恢复 secret.dat 的脚本核心是:
pythonfrom pathlib import Path import base64 s = Path("secret.dat").read_text().strip() planes = ["", "", "", ""] for ch in s: bits = bin(int(ch, 16))[2:].zfill(4) for i in range(4): planes[i] += bits[i] for i, bits in enumerate(planes): data = int(bits, 2).to_bytes(len(bits) // 8, "big").rstrip(b"\x00") print(f"plane {i}:", data.decode("utf-8", errors="replace")) key = base64.b64decode("WXRoOVVyMDYyYXpaQTA5eTRyczVM") print(key.decode())
最后的真 flag 更像是由内层 flag.txt 的提示继续推出来的:数学大师是 August Ferdinand Möbius,他生于 1790、卒于 1868,并以 Möbius strip 相关工作闻名;Thue-Morse 序列可按二进制表示中 1 的个数奇偶性生成。(Encyclopedia Britannica)
按提示取:
textm = 1790 ^ 1868 = 434 n = 2 * (1868 - 1790) = 156
取 Thue-Morse 序列从第 434 位开始的 156 位,转整数后 base62 编码,得到:
textISCC{1TyYETrERKLKHLpksmYzggmb5Nd}
如果平台按 1 开始计数,备选是:
textISCC{1sl5wPXtiT83ZAgDjJFheef8nRK}
我建议优先提交:
textISCC{1TyYETrERKLKHLpksmYzggmb5Nd}
还是不对