你将学到什么
- 解析并转换证据数据
- 将调查拆分为可验证步骤
- 自动化重复的安全分析
编写小型程序来转换数据、自动化调查,并解决难以手工完成的安全任务。
共 47 题。
Programming难度 3`worker-results.jsonl` 在启动时由注入的 FLAG 生成。Base64 解码 result,用各 worker 的 SHA-1 XOR,再按 slot 连接。
Programming难度 3`memory.img` 在启动时由注入的 FLAG 生成。提取 `ALLOC:0x4040` 的 little-endian 长度区域,并用 `MD5(heap-0x4040)` XOR 解密。
Programming难度 3`known.txt` 与 `ciphertext.b64` 在启动时由注入的 FLAG 生成。请从已知明文推导重复 XOR 密钥流,再解密 RESULT。
Programming难度 3`protocol.bin` 在启动时由注入的 FLAG 生成。遍历带长度的 KINO frame,选择 type=3 的 payload 并用 `0x23` XOR 解密。
Programming难度 3`image.pgm` 在启动时由注入的 FLAG 生成。按 8 bit 一组读取像素 LSB,直至 NUL 终止符以恢复旗标。
Programming难度 4`program.kvm` 是自定义四寄存器 VM 的字节码。根据 README 的指令规格实现 Python 解释器,并恢复 VM 输出。
Programming难度 4修复 `firmware.bin`:将 byte 0-3 写为 `KINO`,并把 byte 12 之后数据的 little-endian CRC32 写回 byte 8-11。将修复文件交给 `challenge.py`…
Programming难度 4`beacon.log` 在启动时由注入的 FLAG 生成。按 seq 连接 Base64 payload,并以 `beacon-v1` 的 SHA-256 前八字节重复 XOR 解密。
Programming难度 4`crash-report.txt` 在启动时由注入的 FLAG 生成。选择 SIGSEGV 且匹配 fault_offset 的记录,用 `training-stack-canary` 密钥 XOR 解密…
Programming难度 4`fuzz-results.log` 在启动时由注入的 FLAG 生成。选择触发 SIGSEGV 的输入,并以 `BLAKE2s(fuzz-case-17)` XOR 解密。
Programming难度 4`blocks.json` 在启动时由注入的 FLAG 生成。筛选 `FlagFragment` 且 topic 为 `0xfeedface` 的事件,按 index 连接并十六进制解码。
Programming难度 4`proc_ps.txt` 与 `proc_kernel.txt` 在启动时由注入的 FLAG 生成。比较两份进程视图的差异,并对隐藏 marker 做 ROT13 解码。
Programming难度 4`requests.csv` 在启动时由注入的 FLAG 生成。请选出 signal 最大的记录,对其 payload 做 Base85 解码后 XOR 解密以恢复旗标。
Programming难度 4`findings.json` 在启动时由注入的 FLAG 生成。定位可达的 critical finding,反转其 `reversed_token` 以恢复旗标。
Programming难度 4`scan.json` 在启动时由注入的 FLAG 生成。选择 `443/tcp` 为 open 的验证主机,将其 `review_fragments` 以十六进制解码来恢复旗标。
Programming难度 5`events.jsonl` 混合了多个服务和 trace 的乱序事件。从标记的 auth.failed 事件出发,沿 parent 引用的因果 DAG,按逻辑时钟连接可达的 worker.decrypt 片段。
Programming难度 5`timeline.jsonl` 在启动时由注入的 FLAG 生成。请筛选 exfiltration 事件,按 part 排列、反转 packet 后连接并作十六进制解码。
Programming难度 5`audit_samples.py` 在启动时由注入的 FLAG 生成。请用 AST 定位 `subprocess.run` 的 `shell=True`,并将 `review_token` 的十六进制片段还原为旗标。
Programming难度 5`cloud_inventory.json` 与 `approved.json` 在启动时由注入的 FLAG 生成。验证 forensic-reader 的 `s3:GetObject` 路径,并 URL-safe Base64 解码…
Programming难度 5`firmware.bin` 在启动时由注入的 FLAG 生成。验证 KFW1 末尾 SHA-256 标签,解析 salt、长度与 payload 以恢复旗标。
Programming难度 5`coverage-queue.jsonl` 在启动时由注入的 FLAG 生成。按 offset 排列 Base64 input,并用 `SHA-256(edge-0x5e7)` XOR 解密以恢复旗标。
Programming难度 5`messages.ndjson` 在启动时由注入的 FLAG 生成。按 sequence 排列 payload_hex,以 `0x31` XOR 解密并连接。
Programming难度 5`timings.csv` 在启动时由注入的 FLAG 生成。对每个 position 选择 `median_us` 最大的 candidate,按位置连接以恢复旗标。