挑战一览
编程:多线程结果重组
请分析每次启动时随机生成的并行任务结果日志 worker-results.jsonl。每个 slot 都被尝试了很多次,日志里还保留着超时(timeout)或被后续尝试取代(superseded)的结果。每个 slot…
编程:内存转储分析
请分析每次启动时随机生成的合成内存镜像 memory.img。开头的堆管理表(开头 8 字节 HEAPTBL + NUL、count(uint16)、条目(addr: uint32、size: uint16、flags:…
编程:已知明文密码分析
请分析每次启动时随机生成的证据文件 ciphertext.b64 和 known.txt。ciphertext.b64 是用仅含小写字母的短密钥(长度未知)对观测站报告做循环 XOR 后再 Base64 编码得到的,known.txt…
编程:自定义协议
protocol.bin 是每次启动时创建的二进制抓包文件(位于 /challenge),其中依次排列着若干以 KINO 开头、带长度字段的帧。从头依次遍历这些帧,把 type=3 的帧的 payload 与 0x23 做 XOR…
编程:图像隐写
image.pgm 是每次启动时创建的文本格式(P2)PGM 图像(位于 /challenge)。从头收集每个像素值的最低有效位(LSB),每 8 位合成一个字节,读到 NUL(值为 0 的字节)之前的内容就是旗标。旗标不会以明文存放。
Linux-内核模块:安全分析模拟驱动
本题将一个脆弱的字符设备驱动作为安全的用户空间模拟进行分析,不加载真实内核模块。root 守护进程将该驱动暴露为 /run/vulnerable.sock,你以非特权用户 challenger(uid 1000)连接。阅读提供的驱动源码…
Linux-缓冲区溢出:利用 gets() 漏洞
提供了关闭保护机制的易受攻击 SUID C 二进制文件。利用缓冲区溢出将控制流转入隐藏函数。
高级 Python:执行自定义 VM 字节码
`program.kvm` 是自定义四寄存器 VM 的字节码。根据 README 的指令规格实现 Python 解释器,并恢复 VM 输出。
网络分析:从 TCP 还原 chunked 与 gzip 的 HTTP
`capture.pcap` 记录了在一条 TCP 连接上进行的两次 HTTP 交互。服务器发出的分段顺序被打乱,部分因重传而重复;第二个响应(`GET /api/export`)同时使用了 chunked 与 gzip。请重组 TCP…
网络分析:TCP 重传差分隐蔽信道
`capture.pcap` 中有 TCP 序列号相同的重传包。请仅提取有效载荷发生变化的重传,对每个重复序列号的两个单字节有效载荷做 XOR,并按序列号顺序拼接以恢复旗标。
二进制修复:固件头与 CRC32
修复 `firmware.bin`:将 byte 0-3 写为 `KINO`,并把 byte 12 之后数据的 little-endian CRC32 写回 byte 8-11。将修复文件交给 `challenge.py`…
编程:C2 通信分析
请分析每次启动时随机生成的合成日志 beacon.log(不需要网络连接)。多台主机(会话)的通信按时间顺序混在一起。每个会话在第一条 hello 中发送 nonce,该会话的密钥是 SHA-256(b"beacon-v1" +…
编程:缓冲区溢出崩溃报告分析
请分析每次启动时随机生成的崩溃报告 crash_01.txt 到 crash_06.txt(不含可执行代码)。每份报告都写有发送的输入本身(input:)和崩溃时的指令指针(32 位为 eip,64 位为 rip)。…
编程:模糊测试结果分析
请分析每次启动时随机生成的模糊测试结果日志 fuzz-results.log(输入只是被保存下来,不会被执行)。每行是一个用例,格式为 `case=<6 位十六进制> result=<OK|TIMEOUT|CRASH>…
编程:区块链事件重组
/challenge/blocks.json 是每次容器启动都会用随机数据重新生成的离线开发链区块列表(顺序是乱的,并包含因分叉产生、不在规范链上的孤立区块)。请从 height 最大的区块沿 parent_hash…
编程:Rootkit 视图差异
proc_ps.txt(用户空间 ps 的结果)与 proc_kernel.txt(直接遍历内核任务链表的结果)每次启动时用随机数据生成(位于 /challenge)。两者第一行都有采集时间 snapshot_time(UNIX…
编程:异常检测
/challenge/requests.csv 是每次容器启动都会用随机数据重新生成的 Web API 访问记录(request_id, timestamp, path, status, latency_ms,…
编程:渗透测试框架
findings.json 是每次启动时用随机数据生成的扫描结果(位于 /challenge),包含 entry(edge-gw)、objective(vault)和主机列表 hosts;每台主机的 findings 中有 id(6…
编程:异步扫描器
/challenge/scan-events.jsonl 是每次容器启动都会用随机数据重新生成的异步端口扫描器事件记录(行顺序是乱的,部分事件重复)。对 state 事件,每个 (host, port) 中 t…
Linux-eBPF Rootkit:揭开隐藏进程的真相
本题将 eBPF rootkit 调查安全地模拟为离线证据分析:不加载 eBPF,请从提供的 bpftool 快照中分辨出植入程序及其映射,复原隐藏文件路径,并用植入程序自身的密钥解密保存在该文件中的加密载荷。
Linux-内核利用:安全的 Dirty COW 模拟
本题以安全、确定性的用户空间模拟介绍 Dirty COW(CVE-2016-5195)涉及的 `mmap`、`MAP_PRIVATE` 与 `madvise`;请编译并运行提供的程序,检查生成结果。
高级 Python:还原并发事件 DAG 因果关系
`events.jsonl` 混合了多个服务和 trace 的乱序事件。从标记的 auth.failed 事件出发,沿 parent 引用的因果 DAG,按逻辑时钟连接可达的 worker.decrypt 片段。
网络分析:重组 IPv4 重叠分片
`fragments.pcap` 中 IPv4 ID `0xbeef` 的 UDP 数据报有重叠分片,后到的分片会覆盖部分先到数据。请按到达顺序优先后到数据进行重组,再从 UDP 有效载荷中的 Base64 数据恢复旗标。
编程:APT 模拟
/challenge/events.jsonl 是把多个主机收集到的安全日志合并而成的文件,每次容器启动都会用随机数据重新生成(行顺序是乱的)。ts 是 ISO 8601…