网络安全 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难度 3Docker 取证:检查容器证据
请检查提供的 Docker 镜像、容器层、环境变量和日志,复原被遗留的敏感信息和旗标。
General Skills难度 3从 Git 历史中找出被删除的 API 密钥
`/app/repo` 是一个 Git 仓库。开发者曾误将 API_KEY 提交,并在后续提交中将其删除。请查看正常的 Git 历史,找到删除前的 `config.py`,恢复其 API 密钥中包含的旗标。
Linux难度 3Linux-Capabilities:不依赖 SUID 的提权
系统中特定二进制文件被授予 Linux capabilities。请研究不使用 SUID 位的 capabilities 提权方法。
Linux难度 3Linux-SUID:通过 find 理解提权风险
系统有一份设置了 SUID 位的 `find` 副本。本题在隔离环境中演示此类危险配置为何可导致高权限 shell。
Linux难度 3Linux-proc 内存:查看进程环境变量
持续运行的守护进程将旗标保存在环境变量中。请通过 `/proc` 文件系统检查该进程。
Linux难度 3Linux-strace:追踪系统调用找出文件
提供的二进制没有标准输出。请用 `strace` 追踪系统调用,确定它打开并读取的文件。