题目 1: SnakeBackdoor-1
题目描述
通过分析流量日志(neta分析日志),寻找登录凭证。
解题过程
分析日志内容,发现包含
PASS关键字的记录。提取出 JSON 数据:
[+] 关键字【PASS】:username=admin&password=zxcvbnm123...分析 Base64 编码的响应内容,确认登录成功。
"flashes": [{"t": ["success", "..."], "is_admin": true}]

确认密码为
zxcvbnm123。

题目 2: SnakeBackdoor-2
题目描述
通过分析日志文件,搜索敏感密钥配置。

解题过程
在日志文件中搜索与
SECRET_KEY相关的关键字。找到如下记录:
TIONS': None, 'SECRET_KEY': 'c6242af0-6891-4510-8432-e1cdf051f160&#日志中的内容经过了 HTML 实体编码(
'代表单引号)。还原后的内容显示 Flask 应用的配置信息被泄露。
Flag
flag{c6242af0-6891-4510-8432-e1cdf051f160}
题目 3: SnakeBackdoor-3

题目描述
追踪 HTTP 流并解密内容。
解题过程
在 Wireshark 中追踪 HTTP 流。
发现加密或混淆的内容,进行解密处理。

/
Flag
flag{v1p3r_5tr1k3_k3y}
题目 4: SnakeBackdoor-4
题目描述
分析流量中传输的文件,获取 Shell 权限及相关信息。



解题过程
在流量中发现
shell.zip文件并提取。解压
shell.zip(发现有密码),提取出 shell 文件。分析下一个数据包,发现有一条赋权指令


Flag
flag{tmppython3.13}
题目 5: SnakeBackdoor-5
题目描述
分析特定端口的 TCP 流量,寻找随机数种子(Seed)并解密 Flag。
解题过程
使用过滤器筛选流量:tcp.port == 82。

任意选择一个 TCP 包,将其转换为 16 进制分析。
找到关键的 Seed 值:
0x34952046

使用 C 语言脚本还原随机数生成过程:
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
int main() {
unsigned int seed = 0x34952046;
printf("Seed: 0x%08X (%u)\n", seed, seed);
srand(seed);
printf("Key: ");
int v8[4];
for (int i = 0; i < 4; ++i) {
v8[i] = rand();
unsigned char *p = (unsigned char *)&v8[i];
printf("%02x%02x%02x%02x", p[0], p[1], p[2], p[3]);
}
printf("\n");
return 0;
}Flag
flag{ac46fb610b313b4f32fc642d8834b456}
题目 6: SnakeBackdoor-6
题目描述
分析 SSTI 注入攻击及加密流量(SM4),解密 C2 通信内容。
解题过程
首先找到 SSTI 注入攻击流量。
过滤器:http.request.method == "POST" && http.request.uri contains "preview"

观察到
preview_content字段包含 Python 代码({{''.class...}})。进一步分析加密流量,寻找 Flag 数据包。
过滤器:
tcp.port == 58782提取出加密的蓝色数据块。

使用 Python 脚本进行 SM4 解密(利用上一题获取的 Key):
import struct
from gmssl import sm4
def get_key_from_seed(seed_int):
# ... (Key generation logic based on rand)
# Hardcoded result from previous analysis or C script
return b'\x2c\x5a\x65\x0f\x0b\xd6\x3c\x50\x50\xc8\xf6\x6e\x67\xc5\x63\x2a'
def decrypt_traffic():
seed = 0x34952046
key = get_key_from_seed(seed)
print(f"密钥 (Hex): {key.hex()}")
cipher_hex = "f3103429997e26868972164478d2270929532599023f03408f9218d617937e233630f40d1f7c3577382d6342898a97c4"
ciphertext = bytes.fromhex(cipher_hex)
crypt_sm4 = sm4.CryptSM4()
crypt_sm4.set_key(key, sm4.SM4_DECRYPT)
plaintext = crypt_sm4.crypt_ecb(ciphertext)
print("-" * 30)
try:
print(f"(Text): {plaintext.decode('utf-8')}")
except:
print("解码失败")
if __name__ == "__main__":
decrypt_traffic()解密结果为:
flag{6894c9ec-7l9b-46O5-82bf-4felde27738f}。字符替换混淆修正:
攻击者使用了
tr '1' 'l' | tr '0' 'O'命令进行混淆。需要手动将
l还原为1,O还原为0。7l9b->719b46O5->46054felde->4fe1de
Flag
flag{6894c9ec-719b-4605-82bf-4fe1de27738f}