Mini V&N CTF 2025 WriteUp

misc

welcome.pdf

打开zip得到一个没压缩的pdf和一个压缩的7z
使用wbStego4open以空密码解码这个pdf得到7z的密码
fHsi9qhd#3
打开7z得到四张图片,文件名分别是苦命鸳鸯

额何意味

拼了一下,扫不出来。。搜了一下是汉信码,用ps二值化一下



得到flag前半段
另外发现有盲水印
于是分别提取四张图的盲水印

得到flag后半段
VNCTF{Un10n_7earn_Fr0rnCNqwq}

wav也能像png那样美丽吗

右声道有morse

手抄

666,看文件尾

又是fakeflag,去看频谱

<del>首字母B有什么特别的吗...?</del>
我超 是LSB
拿silenteye解一下,居然出了

VNCTF{C@u5e_y0u_10ve_m3_dummy}
原来这就是一步登天吗

D u know Pyc?

Sect3t.jpg尾部有zip,分离得到

在flag.zip注释里有

怀疑明文攻击?
pyc文件头定义:https://ctf-wiki.org/misc/other/pyc/

注:👇这里应该是py文件修改时间和大小

已知Bit Field尾00 00 00 00
要获得magic number,我们装一个py3.12.12的环境

sh
1conda create -n ctf-test python=3.12.12
2conda activate ctf-test
3python
python
1>>> import importlib.util
2>>> importlib.util.MAGIC_NUMBER
3b'\xcb\r\r\n'
4>>> importlib.util.MAGIC_NUMBER.hex()
5'cb0d0d0a'
6>>>

以及文件大小1411
所以已知明文为cb0d0d0a00000000********83050000
注:其实时间和大小都是已知的,其实明文可以是16字节

sh
1bkcrack -C flag.zip -c attack_it.pyc -x 0 cb0d0d0a00000000 -x 12 83050000
2[15:33:13] Keys
3d7fe0787 b3af2704 99fa95dc
4bkcrack -C flag.zip -c attack_it.pyc -k d7fe0787 b3af2704 99fa95dc -U out.zip 111

于是我们可以看到flag.py的加密流程(不是misc题嘛)
flag反转 -> UTF-8编码 -> 每个字节异或0x37 -> RC4加密(密钥your-secret-key-here) -> base64编码
solution:

python
 1import base64
 2
 3
 4def __rc4(k, d):
 5    S = list(range(256))
 6    j = 0
 7    lk = len(k)
 8    for i in range(256):
 9        j = (j + S[i] + k[i % lk]) & 0xFF
10        S[i], S[j] = S[j], S[i]
11    out = bytearray()
12    i = 0
13    j = 0
14    garbage = 0
15    for ch in d:
16        i = (i + 1) & 0xFF
17        j = (j + S[i]) & 0xFF
18        S[i], S[j] = S[j], S[i]
19        idx = (S[i] + S[j]) & 0xFF
20        kbyte = S[idx]
21        garbage ^= (kbyte ^ i ^ j) & 0
22        out.append(ch ^ kbyte)
23    _ = garbage
24    return bytes(out)
25
26
27c64 = "adJts2ab4DvAn9Zu60bNyGrOAWj72B1/kg=="
28c = base64.b64decode(c64)
29key = b"your-secret-key-here"
30b2 = __rc4(key, c)
31b1 = bytes(b ^ 0x37 for b in b2)
32s1 = b1.decode("utf-8")
33flag = s1[::-1]
34print(flag)

VNCTF{W3lc0me_T0_V&N2025}

MCServer[todo]

先看看怎么个事
蛙趣 古早系统
Linux version 4.9.0-deepin13-amd64 (yangbo@deepin.com) (gcc version 6.3.0 20170321 (Debian 6.3.0-11) ) #1 SMP PREEMPT Deepin 4.9.57-1 (2017-10-19) ()


web

notebook

搜索plantuml漏洞找到CVE-2023-3432
随便写一点

None
1@startuml
2!include https://bing.com
3Alice -> Bob: Message
4@enduml

None
1@startuml
2!include http://127.0.0.1/flag.txt
3Alice -> Bob: Message
4@enduml


VNCTF{ssR1?!_7hiS_R3aL_bug}

chatrobot

观察源码,start()会返回stderr而handle_chat_api()不会

想办法让它报错输出环境变量中的flag就行
在log4j配置中会解析${sys:cmd},那么将cmd设置成${env:FLAG}即可

sh
1curl -X POST -d "text=\${env:FLAG} a" 'http://challenge.ilovectf.cn:30376/'


VNCTF{I0G_1#R_j_15_fUn_NufXVqb}

check_in [todo]