2025 XYCTF WP

MISC

签个到吧

Brainfuck 语言,’+-+-+-‘无效操作会影响解释器运行,删除拿去解密即可

RE

WARMUP

将前面的Execute改成 wscript.echo, 然后输入

1
cscript chal.vbs >> output.txt

将执行结果重定向到 txt 文本中,提取 rc4 key 解密 然后 flag 里面内容 md 5 加密提交即可

Dragon

Window 环境 LLVM clang 编写的 bc 文件,需要将它继续编译

1
clang dragon.bc -o dragon

根据字符串定位到主函数,并进入比较函数:

有个常量 0x42F0E1EBA9EA3693,搜索发现是 CRC-64 算法

小端序存储,每次传入两个字节,直接让 ds 写个脚本:

 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
import struct

def compute_crc(data):
    v5 = 0xFFFFFFFFFFFFFFFF
    for byte in data:
        v5 ^= (byte << 56) & 0xFFFFFFFFFFFFFFFF
        for _ in range(8):
            if v5 & (1 << 63):
                v5 = (v5 << 1) ^ 0x42F0E1EBA9EA3693
            else:
                v5 = (v5 << 1)
            v5 &= 0xFFFFFFFFFFFFFFFF  # 保持64位
    v5 = ~v5 & 0xFFFFFFFFFFFFFFFF
    return v5

# 将十六进制数据按小端序转换为目标值
data = bytes.fromhex("477B9F414EE363DCC6BFB2E7D4F81E039ED85F62BC2FD612E85557CCE1B6E883CC65B62AEBB17BFC6BD9622A1BCA829387C37376A0F8FFB1E1058E382716A80DB7AAD0E81AE6F19E4561F2E7D23F78920BE66FF5A17CC963AB3AB743B0A8D39B")
targets = [struct.unpack('<Q', data[i*8:(i+1)*8])[0] for i in range(12)]  # 修正为小端序

flag = bytearray()

for idx, target in enumerate(targets):
    found = None
    # 枚举所有可能的两个字节组合
    for b0 in range(256):
        for b1 in range(256):
            candidate = bytes([b0, b1])
            crc = compute_crc(candidate)
            if crc == target:
                found = candidate
                break
        if found:
            flag.extend(found)
            print(f"目标值 {idx+1}: {hex(target)} 匹配到: {found}")
            break
    if not found:
        print(f"未找到匹配目标值: {hex(target)}")
        exit()

print("Flag:", flag.decode())

Moon

信息收集,定位到 pyd 字符串常量存放位置,找到目标字符串: Pyd 总共定义了两个函数 check_flag 和 xor_crypt, Check_flag 函数调用了 xor_crypt 函数,因此只需要调试 check_flag 函数即可。

Pyd 函数真正的入口:

这里函数逻辑运算入口:

直接到比较处下断点:

查看 v45 和 v10 处,发现一个为目标字符,另一个应该加密产生的字符,结合函数名,猜测该字符为异或所产生,只需要将输入字符 byte 改为 0 即可得到密钥

定位到此处,将 rax 处的输入字符修改为 0 byte

得到密钥:

解密:

Licensed under CC BY-NC-SA 4.0
最后更新于 Apr 08, 2025 11:34 CST
使用 Hugo 构建
主题 StackJimmy 设计