欢迎光临
我们一直在努力

手把手带你走一遍sql注入完整流程

别再死记Payload了!一篇文章搞懂SQL注入利用思路

大家好,前面学习了 SQL 注入的概念和分类之后,我发现自己遇到了一个问题。

数字型注入知道。

字符型注入知道。

GET 注入、POST 注入也知道。

但是如果真给我一个存在 SQL 注入的网站:

http://test.com/news.php?id=1

接下来该干什么?

应该从哪里开始?

应该怎么一步一步拿到数据库里的数据?

直到最近系统学习了 SQL 注入的利用流程,我才发现原来整个过程是有固定思路的。

今天就用我自己的理解方式,带大家走一遍 SQL 注入的完整利用流程。

一、SQL注入到底在干什么?

很多新手认为:

SQL 注入 = 爆密码

其实并不是。

SQL 注入本质上是:攻击者通过构造特殊输入,改变数据库原本执行的 SQL 语句逻辑。

例如网站原本执行:

SELECT * FROM news WHERE id=1;

如果开发者没有过滤用户输入。

攻击者输入:

1 OR 1=1

最终可能变成:

SELECT * FROM news WHERE id=1 OR 1=1;

由于:

1=1

永远成立。

数据库就可能返回所有数据。

这就是 SQL 注入的核心原理。

二、拿到一个参数后第一步做什么?

假设发现这样一个地址:

http://test.com/news.php?id=1

千万不要上来就开始各种 payload。

第一步永远是:确认是否存在注入。

例如:

?id=1'

如果页面报错。

说明参数可能参与了 SQL 查询。

继续测试。

三、判断是否真的存在SQL注入

经典方法:

正常条件

?id=1 and 1=1

页面正常。

错误条件

?id=1 and 1=2

页面异常。

如果:

1=1 正常
1=2 异常

那么说明用户输入已经影响了数据库查询逻辑。

此时基本可以判断存在 SQL 注入。

很多靶场都是从这里开始突破的。

四、确定查询字段数量

确认存在注入后,下一步要知道:数据库查询了多少列。

因为后面要使用 UNION 联合查询。

最常见的方法:

order by 1

正常。

order by 2

正常。

order by 3

正常。

order by 4

报错。

说明当前查询只有:

3个字段

因为第四列已经不存在了。

五、寻找回显位

知道字段数量后,开始测试哪些字段能显示到页面。

例如:

union select 1,2,3

页面出现:2

那么说明:

第二列是回显位。

如果出现:1 和 3

则说明:

第一列和第三列是回显位。

后面获取数据库信息就需要放到这些位置。

六、获取数据库名称

找到回显位后。

可以查询数据库信息。

例如:

union select 1,database(),3

页面可能显示:security

这就是当前数据库名称。

说明我们已经成功读取数据库信息。

七、获取所有表名

数据库知道了,接下来想知道里面有哪些表。

MySQL 中有一个特殊数据库:

information_schema

它记录着所有数据库结构信息。

例如查询:

information_schema.tables

可以获取表名称。

最终可能得到:

users
news
admin
message

这些都是目标数据库中的表。

八、获取字段名称

知道表之后,继续查看字段。

例如:

users

表中可能存在:

id
username
password
email

这些字段决定了数据存放的位置。

九、获取真正的数据

最后一步,读取数据。

例如:

username
password

字段。

查询后可能得到:

admin
123456

至此,整个 SQL 注入利用过程完成。

十、把整个流程串起来

实际渗透测试中。

大多数 SQL 注入利用流程都遵循下面这个思路:

如果把这个流程理解透彻。

后面学习:

  • Union注入
  • 报错注入
  • 布尔盲注
  • 时间盲注
  • SQLMap

都会轻松很多。

因为这些技术本质上只是获取数据的方法不同。

而整体利用思路是完全一致的。

十一、总结

刚开始学习 SQL 注入的时候,我总觉得各种注入方式特别乱。

今天学习完利用流程之后才发现。

真正重要的不是背多少 Payload。

而是知道:

拿到一个参数以后应该先做什么,后做什么。

只有把整个利用链路理解清楚。

后面学习 Union 注入、盲注、SQLMap 时才不会觉得知识点零散。

赞(0)
未经允许不得转载:171主机测评 » 手把手带你走一遍sql注入完整流程
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址