mito753/Kernel-Exploit-Dojo
GitHub: mito753/Kernel-Exploit-Dojo
一个基于 CTF 题目的 Linux 内核漏洞利用学习资料库,汇集了 PoC、利用代码与详细题解。
Stars: 1 | Forks: 0
# Kernel-Exploit-Dojo (道場)
## 概述
Kernel-Exploit-Dojo 是一个主要基于 CTF 挑战赛的内核漏洞利用笔记、PoC 和题解的集合。
每个挑战目录(在可用的情况下)包含原始分发文件、漏洞利用代码和技术题解。
其目标是整理实用的内核 pwn 技术,例如 UAF、堆喷射、pipe_buffer 滥用、msg_msg、modprobe_path 覆写和 cred 覆写。
挑战按年份组织,顶层的 Challenge List 作为每个挑战目录的索引。
Kernel-Exploit-Dojo (道場) は、CTF の Kernel Exploit 問題を題材にした PoC・exploit・writeup の整理用リポジトリです。
各問題ごとに配布ファイル、exploit、解説をまとめ、実戦的な kernel pwn 技術を復習できる形にしています。
各問題は年度別フォルダに整理しており、トップページの Challenge List から各問題へ移動できます。
## 免责声明
本仓库仅用于 CTF 学习和本地实验环境。
请勿在生产系统或您不拥有的系统上运行这些漏洞利用程序。
所有示例均旨在隔离的 QEMU/CTF 环境中执行。
本リポジトリは CTF 学習およびローカル検証環境向けです。
実環境・第三者環境では絶対に実行しないでください。
## 挑战列表
| CTF | 挑战 | 状态 | 难度 (解出数) | 漏洞 | 原语 | 最终技术 |
|---|---|:---:|:---:|---|---|---|
| b01lers CTF 2026 | [throughthewall](./2026/b01lers_CTF_2026/Pwn_throughthewall) | solved / writeup | Easy (69) | kmalloc-1024 UAF | pipe_buffer reclaim | Dirty Pipe, `/etc/passwd` 覆写 |
| ASIS CTF Finals 2025 | [KList](./2025/ASIS_CTF_Finals_2025/Pwn_KList) | solved | Easy (37) | OOB write | kernel memory write | modprobe_path 覆写 |
| NexHunt CTF 2025 | [below](./2025/NexHunt_CTF_2025/Pwn_below) | solved / writeup | Easy (12) | OOB read/write | kernel read/write | modprobe_path 覆写 |
| N1CTF 2025 | [ktou](./2025/N1CTF_2025/Pwn_ktou) | solved / writeup | Easy (38) | 逻辑缺陷 | 内核对象指针损坏 | GOT 覆写 |
| UIUCTF 2025 | [Baby Kernel](./2025/UIUCTF_2025/Pwn_Baby_Kernel) | solved / writeup | Easy (53) | 可控的 UAF | `tty_struct` ops 劫持 | modprobe_path 覆写 |
| NahamCon CTF 2025 | [The Jumps](./2025/NahamCon_CTF_2025/Pwn_The_Jumps) | solved / writeup | Easy (59) | 栈溢出 | 内核栈 ROP | 内核 ROP, `CC(PKC(0)` |
| 0xFUN CTF 2026 | [Phantom](./2026/0xFUN_CTF_2026/Pwn_Phantom) | solved / writeup | Easy-Medium (45) | mmap UAF | dangling mmap, 释放页面重用 | cred 覆写, modprobe_path |
| THJCC CTF 2026 | [Excalipipe](./2026/THJCC_CTF_2026/Pwn_Excalipipe) | solved / writeup | Easy-Medium (17) | 允许重用 merge 标志 | 页缓存覆写 | `/bin/busybox` 覆写 |
| PatriotCTF 2025 | [switchboard](./2025/PatriotCTF_2025/Pwn_switchboard) | solved / writeup | Easy-Medium (53) | kmalloc-32 UAF | small-cache reclaim, 可控对象重用 | modprobe_path 覆写 |
| TFC_CTF_2025 | [SLOTS](./2025/TFC_CTF_2025/Pwn_SLOTS) | solved / writeup | Easy-Medium (28) | 可控的 UAF | `tty_struct` ops 劫持 | 读取全局 flag 缓冲区 |
| smileyCTF 2025 | [blargh](./2025/smileyCTF_2025/Pwn_blargh) | solved / writeup | Easy-Medium (38) | 1 字节 NULL 写入内核内存 | 只读内核文本修改 | 补丁内核函数 |
| Codegate CTF 2025 Preliminary | [pew](./2025/Codegate_CTF_2025_Preliminary/Pwn_pew) | solved / writeup | Easy-Medium (13) | kmalloc-4096 UAF | pipe_buffer reclaim | Dirty Pipe, `/etc/passwd` 覆写 |
| CTF@AC26 Quals | [Event Horizon](./2026/CTF%40AC26-Quals/Pwn_Event_Horizon) | solved | Medium (31) | LKM, 微码引擎 | 自定义 VM 分析,内核代码执行路径 | TBD |
| HeroCTF_v7 | [Safe Device](./2025/HeroCTF_v7/Pwn_Safe_Device) | solved / writeup | Medium (7) | 栈溢出 | 内核栈 ROP | aarch64 内核 ROP, modprobe_path 覆写 |
| DownUnderCTF 2025 | [backdoor](./2025/DownUnderCTF_2025/Pwn_backdoor) | solved / writeup | Medium (18) | 自定义 syscall | kbase 泄露与内核内存写入 | modprobe_path 覆写 |
| MaltaCTF 2025 Quals | [Write Flag Where](./2025/MaltaCTF_2025_Quals/Pwn_Write_Flag_Where) | solved / writeup | Medium (16) | 自定义 syscall | 通过直接映射进行物理内存写入 | 调用 `modify_ldt` |
| LA CTF 2025 | [messenger](./2025/LA_CTF_2025/Pwn_messenger) | solved / writeup | Medium (10) | msgutil 3 字节溢出 | pipe_buffer 页损坏 | cred 搜索,cred 覆写 |
| THJCC CTF 2026 | [僕と契約して、魔法少女になってよ!](./2026/THJCC_CTF_2026/Pwn_僕と契約して、魔法少女になってよ!) | solved / writeup | Medium-High (3) | 单字节 OOB 覆写 | `struct file` 损坏 | `struct file->f_mode` 覆写 |
| BackdoorCTF 2025 | [skernel](./2025/BackdoorCTF_2025/Pwn_skernel) | writeup | Medium-High (5) | kmalloc-64 UAF | 竞态辅助的 OOB 泄露/写入 | 内核 ROP, `commit_creds(&init_cred)` |
| CrewCTF 2025 | [barelyontime](./2025/CrewCTF_2025/Pwn_barelyontime) | writeup | Medium-High (3) | 逻辑漏洞, UAF | UFFD 辅助的 UAF 竞态 | 内核文本覆写 |
| corCTF 2025 | [zenerational-aura](./2025/corCTF_2025/Pwn_zenerational-aura) | solved / writeup | Medium-High (5) | 崩溃 syscall | 通过 prefetch 绕过 KASLR | 内核 panic 日志预言机 |
| Full Weak Engineer CTF 2025 | [cknote](./2025/Full_Weak_Engineer_CTF_2025/Pwn_cknote) | solved / writeup | Medium-High (2) | kmalloc-32 UAF | UAF 读/写,freelist 操纵 | cred 覆写 |
| DownUnderCTF 2025 | [Rolling Around](./2025/DownUnderCTF_2025/Pwn_Rolling_Around) | solved / writeup | Medium-High (4) | 自定义 eBPF ALU 操作码 | OOB eBPF 栈 | modprobe_path 覆写 |
| MaltaCTF 2025 Quals | [secure-dwarf](./2025/MaltaCTF_2025_Quals/Pwn_secure-dwarf) | solved / writeup | Medium-High (8) | 自定义 DWARF 字节码 | AAR 原语 | 读取内核内存中的 flag |
| DiceCTF 2025 Quals | [oboe](./2025/DiceCTF_2025_Quals/Pwn_oboe) | writeup | Medium-High (16) | 单字节 OOB 覆写 | refcount 覆写 | 内核 ROP, `commit_creds(&init_cred)` |
| KalmarCTF 2025 | [decore](./2025/KalmarCTF_2025/Pwn_decore) | writeup | Medium-High (10) | core_pattern 中的二进制集 | 竞态 | 将替代文件转换为符号链接 |
| TRX CTF 2025 | [/dev/mem](./2025/TRX_CTF_2025\Pwn_dev_mem) | solved / writeup | Medium-High (4) | 带有 `/dev/mem` 的存在漏洞的二进制文件 | 通过 modprobe_path 绕过 KASLR | 遍历 task 列表,cred 覆写 |
## 涵盖技术
- Use-After-Free
- 栈溢出
- 自定义 syscall 滥用
- 自定义 VM / 字节码漏洞
- kmalloc 缓存回收
- 基于 mmap 的悬挂映射
- pipe_buffer 回收
- msg_msg 喷射
- 任意读/写
- 页缓存覆写
- 内核文本覆写
- KASLR 绕过
- Dirty Pipe 风格的漏洞利用
- modprobe_path 覆写
- cred 覆写
- 内核 ROP
- LKM 逆向工程
- eBPF 验证器 / eBPF VM 漏洞利用
- DWARF 字节码 VM 漏洞利用
- 基于 QEMU 的内核漏洞利用测试
## 构建与运行
大多数漏洞利用程序旨在进行静态编译,并在提供的 QEMU/initramfs 环境中执行。
示例:
```
gcc exp01.c -o exp01 -static
```
或
```
musl-gcc exp01.c -o exp01 -static
```
## 挑战模板
- `README.md` — 元数据和简短摘要
- `distribution/` — 原始挑战文件
- `exploit/` — 漏洞利用源代码和辅助脚本(如果有)
- `writeup/` — 原始题解、笔记和外部参考资料
## 参考
- https://lkmidas.github.io/posts/20210123-linux-kernel-pwn-part-1/
- https://pawnyable.cafe/linux-kernel/
标签:CTF Writeup, Dirty Pipe, Docker镜像, Exploit开发, Kernel Pwn, Linux内核, PoC, UAF, Web报告查看器, Writeup, XXE攻击, 二进制安全, 内核漏洞利用, 堆喷射, 子域名枚举, 安全渗透, 安全靶场, 客户端加密, 提权, 暴力破解, 漏洞分析, 系统安全, 网络安全, 越界读写, 路径探测, 身份验证强制, 隐私保护