你将学到什么
- 解析并转换证据数据
- 将调查拆分为可验证步骤
- 自动化重复的安全分析
编写小型程序来转换数据、自动化调查,并解决难以手工完成的安全任务。
共 47 题。
Programming难度 1安全工作常需用编程处理大量数据。本题的 `data.txt` 有 100 行文本,其中一行包含旗标;请补全 Python 代码并找出它。
Programming难度 2启动 `localhost:9102` 的股票 API,在所有股票交易中找出 `sell_price - buy_price` 最大的 id,并把它 POST 到 `/api/check`;正确响应会返回启动时注入的 FLAG。
Programming难度 2`data.txt` 有超过 100 行 Base64 字符串,只有一行解码后是启动时注入的 FLAG。请解码所有行并找出它。
Programming难度 2启动时生成的 `data.txt` 是销售 CSV。唯一满足 amount >= 10000、status 为 completed、product_id 以 SEC- 开头的行,其 notes 即为 FLAG。
Programming难度 2启动时生成的 JSON `data.txt` 中,找出唯一 role 为 admin、active 为 true 且 email 包含 `@secret.com` 的用户,读取其 flag 字段。
Programming难度 2启动时生成的 `data.txt` 是 1200 行访问日志。只筛选 `192.168.1.100` 的行,并在其中寻找 FLAG。
Programming难度 2`data.txt` 每行含一个 Base64 字符串,其中一行解码后以 `FLAG{...}` 开头。编写脚本解码所有行并找出旗标。
Programming难度 2`data.txt` 是销售 CSV:`transaction_id,date,product_id,amount,status,notes`。找出唯一同时满足 amount >= 10000、status 为…
Programming难度 2`data.txt` 是包含许多用户的 JSON。找出唯一 role 为 admin、active 为 true 且 email 含 `@secret.com` 的用户,并取得该记录中的旗标。
Programming难度 2`data.txt` 是超过 1000 行的访问日志。提取来自 `192.168.1.100` 的行,并找出其中的 `FLAG{...}`。
Programming难度 2`data.txt` 含许多 sha256 哈希。旗标被分成有序块,每块按 `sha256("{i}:{chunk}")` 计算,候选块在 `wordlist.txt` 中;请逐块暴力匹配并拼回旗标。
Programming难度 2`jobs.log` 在启动时由注入的 FLAG 生成。请选出 `archive/status=ok` 的行,按 part 排列,反转 value 后作十六进制解码。
Programming难度 2`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`capture.bin` 在启动时由注入的 FLAG 生成。解析 KBIN TLV 记录,提取 type `0x42`,再用 `0x5A` XOR 解码。
Programming难度 2从 `data.txt` 提取所有 `KINO-四位数字-四位大写字母` 标记,找出只出现一次的值并输入 `challenge.py`;正确时显示启动时注入的 FLAG。
Programming难度 3`data.db` 是业务 SQLite 数据库,含 users、orders、audit_log。旗标藏在订单总额 `SUM(amount)` 最大的唯一用户的 `security_note` 中;请用 JOIN 与聚合定位它。
Programming难度 3`cipher.txt` 以十六进制保存经自定义密码加密的旗标。加密逐字节执行 add(密钥加法)-> xor(位置相关)-> rotl(循环移位);请按逆序实现解密。完整规格见 `python3 challenge.py`。
Programming难度 3`secret.zip` 用弱密码加密,内含 `flag.txt`。请用随附的 `wordlist.txt` 和 Python 标准库 `zipfile` 暴力尝试密码并提取旗标。
Programming难度 3请用 BFS 求 `data.txt` 中从 S 到 E 的最短路径,并将 UDLR 移动序列输入 `challenge.py`。正确路径会显示启动时注入的 FLAG。
Programming难度 3`evidence.db` 在启动时由注入的 FLAG 生成。JOIN users 与 access_log,找到 trust_score 最高的 note 并 Base64 解码。
Programming难度 3`site.json` 在启动时由注入的 FLAG 生成。沿 link 图的 order 顺序取得 comment 的 Base64 片段并连接。
Programming难度 3`archive.json` 在启动时由注入的 FLAG 生成。用 wordlist 找到 SHA-256 与 `password_sha256` 匹配的密码,再用其 key byte XOR 解密。
Programming难度 3`capture.txt` 在启动时由注入的 FLAG 生成。选择 `flow=exfil` 的 `payload_hex`,用 `0x5A` XOR 解密。