网络安全 CTF 挑战

选择一个领域与难度,在安全环境中调查证据并验证结论。

Programming难度 2

编程:PIN 暴力匹配

`vault.json` 在启动时由注入的 FLAG 生成。请在 `0000–9999` 中匹配 PIN 的 SHA-256,并使用匹配 PIN 的流进行 XOR 解密。

Programming难度 2

编程:哈希计算

`artifact-manifest.json` 在启动时由注入的 FLAG 生成。验证每个 data 的 SHA-256,用 `SHA-256(name)` XOR 解密,并连接结果。

Programming难度 2

编程:二进制 TLV 解析

`capture.bin` 在启动时由注入的 FLAG 生成。解析 KBIN TLV 记录,提取 type `0x42`,再用 `0x5A` XOR 解码。

General Skills难度 2

进程猎人:隐藏进程

名为 `secret_service` 的后台进程把旗标放在命令行参数中。请找出它的 PID、运行用户和完整参数。

Forensics难度 2

从内存转储中查找进程

分析 `memory.dump` 记录的进程列表,找出可疑进程名中包含的 flag。

Cryptography难度 2

彩虹表攻击

未加盐的快速哈希可被预计算反查数据库轻易还原。请反查给出的 MD5 哈希。 MD5 哈希: 5f4dcc3b5aa765d61d8327deb882cf99 请反查该哈希,并把原始字符串以 KINOCO{...} 的形式提交。

General Skills难度 2

日志分析:找出入侵者

`/app/auth.log` 记录认证事件。找出一小时内失败登录至少 10 次的 IP,并取得该 IP 的第一次失败时间戳;时间戳是旗标线索。

Cryptography难度 2

一次一密密钥复用攻击

一次一密仅在密钥只使用一次时安全。复用同一密钥时,可由已知明文恢复另一段明文。 用同一密钥加密的两个密文: ciphertext1_hex = 1c0a070901 known_plaintext1 = HELLO…

Cryptography难度 2

可预测的随机数

固定种子的伪随机输出可被复现;通用随机数生成器不能用于加密机密。 旗标生成代码: import random random.seed(12345) flag_chars = [chr(random.randint(65, 90))…

Forensics难度 2

恢复已删除文件

从 `disk_image.dd` 中恢复已删除的文本记录并找出 flag,学习文件雕刻的基础。

General Skills难度 2

压缩迷宫:多层归档文件

`/app/flag.tar.gz` 是多层压缩文件:`flag.tar.gz → flag.tar → flag.zip.bz2.gz → flag.zip.bz2 → flag.zip → flag.txt`。请逐层解压并读取最终文件。

Cryptography难度 2

破解小型 RSA 密钥

RSA 依赖足够大的素数。本题的 `n` 过小;请分解它、求出私钥指数,并解密密文数列。 公钥与密文: n = 323 e = 5 ciphertexts = [115, 181, 241, 109, 109, 57, 190,…

Programming难度 2

正则表达式:只出现一次的黄金标记

从 `data.txt` 提取所有 `KINO-四位数字-四位大写字母` 标记,找出只出现一次的值并输入 `challenge.py`;正确时显示启动时注入的 FLAG。

General Skills难度 2

正则表达式大师:日志文件分析

`/app/access.log` 有数千条访问记录。提取 IP 以 `192.168.1.` 开头且状态码为 `404` 的记录,匹配行数即为旗标。

General Skills难度 2

环境变量大师:PATH 劫持

隐藏命令 `getflag` 位于 `/app/secret_bin`,但目录未在 `PATH` 中。请用绝对路径和修改 `PATH` 两种方式运行它。

Forensics难度 2

图像 LSB 中隐藏的消息

从 `image.png` 的最低有效位(LSB)隐写数据中恢复 flag。

Forensics难度 3

从 Chrome 浏览器提取会话 Cookie

分析 Chrome 的 Cookies SQLite 数据库和 History,查询指定站点的目标会话信息。

Forensics难度 3

检测 DNS 隧道

从 `dns_queries.log` 中检测 DNS 隧道造成的数据外传,并恢复 flag。

General Skills难度 3

Docker 取证:检查容器证据

请检查提供的 Docker 镜像、容器层、环境变量和日志,复原被遗留的敏感信息和旗标。

General Skills难度 3

从 Git 历史中找出被删除的 API 密钥

`/app/repo` 是一个 Git 仓库。开发者曾误将 API_KEY 提交,并在后续提交中将其删除。请查看正常的 Git 历史,找到删除前的 `config.py`,恢复其 API 密钥中包含的旗标。

Linux难度 3

Linux-Capabilities:不依赖 SUID 的提权

系统中特定二进制文件被授予 Linux capabilities。请研究不使用 SUID 位的 capabilities 提权方法。

Linux难度 3

Linux-SUID:通过 find 理解提权风险

系统有一份设置了 SUID 位的 `find` 副本。本题在隔离环境中演示此类危险配置为何可导致高权限 shell。

Linux难度 3

Linux-proc 内存:查看进程环境变量

持续运行的守护进程将旗标保存在环境变量中。请通过 `/proc` 文件系统检查该进程。

Linux难度 3

Linux-strace:追踪系统调用找出文件

提供的二进制没有标准输出。请用 `strace` 追踪系统调用,确定它打开并读取的文件。