大模型技术快速演进,正在改变 CTF 与代码审计的传统工作方式。当前模型对源码的理解能力已经相当成熟,不少团队已将 LLM 引入 CTF 解题、Web 代码审计与漏洞挖掘流程。
概览
大模型技术快速演进,正在改变 CTF 与代码审计的传统工作方式。当前模型对源码的理解能力已经相当成熟,不少团队已将 LLM 引入 CTF 解题、Web 代码审计与漏洞挖掘流程。 1. :真实项目的路由、调用链、配置、过滤逻辑无法在一次对话里完整呈现。 2. :静态规则或模型往往只盯「危险函数」,忽略路由是否可达、前置过滤是否生效、参数是否可控。 3. :审计报告里写「可能存在 SQL 注入」与「存在可稳定利用的 PoC」是两回事。CTF 与实战都需要后者。 - 对应 *_rules/ 中的检测规则(应命中) - 可选 *_chain.md(路由与调用链,与样例同目录或同编号) - 对应 code_audit_skills/ 中的 Skill(指导 LLM 写 PoC) php_code_audit/vuln_examples/ 下已有 (由历史 CTF 题目整理),用作 Semgrep / Psalm 规则与 Skill 开发的 。 辅助文件:Y29uZmln.php、class.php、f1aG.php、flag.txt 等(均在 vuln_examples/)。 - [x] 按语言模块搭建目录骨架(PHP / Java / Python / Go / C++) - [x] PHP 样例迁入 php_code_audit/vuln_examples/ - [ ] GitHub 仓库更名为 Code_Audit_Skills - [ ] 完成 01_lfi 全链路样板(semgrep + psalm + skill + chain) - [ ] Java / Python 各 1 个 CodeQL 样板 - [ ] CI:规则对 vuln_examples 命中,干净代码不误报 - 样例代码来源于 CTF 平台或公开改编,。 - 请勿将本题代码或 PoC 用于未授权测试或生产环境。
README
Code_Audit_Skills
维护者:n0tepad
仓库:n0tepad-pro/Code_Audit_Skills
背景
大模型技术快速演进,正在改变 CTF 与代码审计的传统工作方式。当前模型对源码的理解能力已经相当成熟,不少团队已将 LLM 引入 CTF 解题、Web 代码审计与漏洞挖掘流程。
但实践中有一个明显缺口:仅靠「Skill + 丢一段代码给模型」远远不够。
常见问题在于:
- 上下文不足:真实项目的路由、调用链、配置、过滤逻辑无法在一次对话里完整呈现。
- 误报泛滥:静态规则或模型往往只盯「危险函数」,忽略路由是否可达、前置过滤是否生效、参数是否可控。
- 缺少可验证结论:审计报告里写「可能存在 SQL 注入」与「存在可稳定利用的 PoC」是两回事。CTF 与实战都需要后者。
因此,本项目探索的是一种 「经典审计方法论 + 规则引擎 + 调用链 + LLM Skill」 的组合路径:先缩小范围,再精准确认,最后产出 真实可利用的 PoC。
核心思路
路由 / 入口构图 → 规则扫描可疑点 → 链路分析与可达性判断 → LLM Skill 编写 PoC → 本地验证
| 阶段 | 做什么 | 产出 |
|---|---|---|
| 1. 路由构图 | 梳理 HTTP 路由、控制器、Handler、include 关系 | 入口 → sink 的可疑路径候选 |
| 2. 规则扫描 | PHP 用 Semgrep + Psalm;Java/Python/Go/C/C++ 用 CodeQL | 告警点 + 规则 ID + 源码位置 |
| 3. 链路分析 | 结合调用链判断:是否路由可达、过滤是否可 bypass、sink 是否可控 | 高置信「待验证」漏洞链 |
| 4. LLM Skill | 将 链路上下文 + 规则命中 + Skill 模板 交给模型,生成 exploit 思路与 PoC | 可执行的 payload / 脚本 |
| 5. PoC 验证 | 在 vuln_examples 或靶场环境中复现,确认可利用性 | 验证通过 / 误报剔除 |
设计原则:规则负责 Recall(找 suspects),链路负责 Precision(筛 reachable),Skill + PoC 负责 Confirm(证 exploitable)。
技术方案
本仓库按语言选用不同的静态分析基座。CodeQL 官方不支持 PHP,因此 PHP 与其他语言采用不同组合:
| 语言 | 静态分析方案 | 分工说明 |
|---|---|---|
| PHP | Psalm + Semgrep | Semgrep 负责模式规则与广覆盖召回;Psalm --taint-analysis 负责 source → sink 污点追踪,降低误报 |
| Java | CodeQL | 跨过程数据流 + QL 查询,覆盖 Spring 等常见框架场景 |
| Python | CodeQL | 与 Java 同栈,规则与查询统一维护 |
| Go | CodeQL | 与 Java 同栈 |
| C / C++ | CodeQL | 内存安全、缓冲区等问题分析 |
PHP: 路由构图 → Semgrep 规则 → Psalm 污点 → Skill 写 PoC → 验证
其他: 路由构图 → CodeQL 查询 → 链路分析 → Skill 写 PoC → 验证
仓库结构
按 语言模块 组织,每种语言自包含规则、Skill 与漏洞样例:
Code_Audit_Skills/
├── README.md
│
├── php_code_audit/
│ ├── semgrep_rules/ # Semgrep YAML 规则
│ ├── psalm_rules/ # Psalm 污点分析配置
│ ├── code_audit_skills/ # LLM Agent Skills(PoC 生成、链路分析等)
│ └── vuln_examples/ # 可运行漏洞样例(正样本)
│
├── java_code_audit/
│ ├── codeql_rules/
│ ├── code_audit_skills/
│ └── vuln_examples/
│
├── python_code_audit/
│ ├── codeql_rules/
│ ├── code_audit_skills/
│ └── vuln_examples/
│
├── go_code_audit/
│ ├── codeql_rules/
│ ├── code_audit_skills/
│ └── vuln_examples/
│
└── c_cpp_code_audit/
├── codeql_rules/
├── code_audit_skills/
└── vuln_examples/
每个 vuln_examples/ 条目 ideally 配套:
- 对应
*_rules/中的检测规则(应命中) - 可选
*_chain.md(路由与调用链,与样例同目录或同编号) - 对应
code_audit_skills/中的 Skill(指导 LLM 写 PoC)
详见各语言目录下的 README.md。
当前内容(Phase 0 · PHP)
php_code_audit/vuln_examples/ 下已有 18 道 PHP Web 审计样例(由历史 CTF 题目整理),用作 Semgrep / Psalm 规则与 Skill 开发的 正样本基准。
本地运行
php -S 127.0.0.1:8080 -t .
# 示例:http://127.0.0.1:8080/php_code_audit/vuln_examples/01_lfi.php
样例索引
| 文件 | 漏洞类型 |
|---|---|
| 01_lfi.php | LFI · 伪协议 |
| 02_strcmp_bypass.php | strcmp 绕过 |
| 03_weak_type_compare.php | 弱类型 == / === |
| 04_numeric_bypass.php | is_numeric() 绕过 |
| 05_ereg_null_trunc.php | ereg() %00 截断 |
| 06_weak_type_eq_zero.php | 弱类型 $a==0 |
| 07_file_get_contents.php | 伪协议 + file_get_contents |
| 08_extract.php | extract 变量覆盖 |
| 09_custom_header_1.php | 自定义 Header(一) |
| 10_custom_header_2.php | 自定义 Header(二) |
| 11_x_forwarded_for.php | X-Forwarded-For |
| 12_url_encode_mismatch.php | URL 编解码不一致 |
| 13_sqli_business_logic.php | 业务逻辑 SQL 注入 |
| 14_encrypt_decrypt.php | 加解密逻辑 |
| 15_sha1_bypass.php | sha1() 缺陷 |
| 16_parse_url_host_bypass.php | parse_url / Host 校验 |
| 17_md5_sqli_login.php | md5 + SQL 登录 |
| 18_file_upload_bypass.php | 文件上传绕过 |
辅助文件:Y29uZmln.php、class.php、f1aG.php、flag.txt 等(均在 vuln_examples/)。
首个端到端样板(计划中 · 01_lfi)
| 路径 | 内容 |
|---|---|
php_code_audit/semgrep_rules/lfi.yaml |
LFI 模式规则 |
php_code_audit/psalm_rules/ |
污点 source/sink 配置 |
php_code_audit/vuln_examples/01_lfi_chain.md |
$_GET['page'] → include() 链路 |
php_code_audit/code_audit_skills/lfi-poc/SKILL.md |
LLM 生成 LFI PoC 步骤 |
php_code_audit/vuln_examples/01_lfi.md |
原理与验证记录(可选) |
PoC 验证
| 场景 | 工具 |
|---|---|
| PHP 样例本地运行 | php -S 127.0.0.1:8080 -t . |
| HTTP 手工验证 | Burp Suite、curl |
| 规则回归 | Semgrep / Psalm / CodeQL 对 vuln_examples 应命中 |
贡献与路线图
- [x] 按语言模块搭建目录骨架(PHP / Java / Python / Go / C++)
- [x] PHP 样例迁入
php_code_audit/vuln_examples/ - [ ] GitHub 仓库更名为
Code_Audit_Skills - [ ] 完成
01_lfi全链路样板(semgrep + psalm + skill + chain) - [ ] Java / Python 各 1 个 CodeQL 样板
- [ ] CI:规则对
vuln_examples命中,干净代码不误报
欢迎提交规则、样例、Skill 与已验证 PoC。
声明
- 样例代码来源于 CTF 平台或公开改编,仅供安全学习与审计研究。
- 请勿将本题代码或 PoC 用于未授权测试或生产环境。
推荐工具
换一个关键词,或者移除筛选条件。
安装
npx skillfish add n0tepad-pro/code_audit_skills