本人呢也是学习Sql注入不久的小白,可能对此题理解的也不是很透彻,但是也算摸爬滚打的把这题做出来了,跟大家一起分享分享,有什么不足的地方欢迎大家指正!
相信做到这里的小伙伴对什么是联合注入、盲注啊,单引号爆点位这种基本注入方式已经很熟悉了,我也不做过多的废话在这上面,直接开始我们的正题。
本题用到的函数:
updatexml()、concat() //根据个人还可以使用extractvalue()、floor()等报错注入方式,具体函数使用方法我在不做过多赘述,大家根据个人需求自行查找。
解题步骤
一、使用单引号判断该点位是否存在注入
根据报错提示,我们可以肯定该处存在注入漏洞。
二、使用传统注入方式探测:' or 1=1 --
用我的lj英语给大家翻译一下回显内容:你的输入已经被我们过滤结果为:' 1=1
到这里我大概就猜到,系统可能对我们输入的敏感字母进行了过滤,我们去看一下源码
果然,系统将我们输入的or、and给过滤了。
三、进行注入
这里可以注入的方式有多种,我呢使用的是Union + updatexml()实现报错注入的方式,注入语法为:%27%20union%20select%20updatexml(1,concat(0x7e,(database())),1)%20--+
%27 = ' //单引号被编码为%27
%20 = + //这里我可能没表达的很清楚,说通俗点就是空格符被编码为%20,我们也可以用+代替空格符
注入效果如下:
"security"即为我们爆破出来的数据库名,我们可以结合别的sql语句获取我们想要的数据,到这里我们的题目也就做完了。
欢迎大家指正,希望与大家一起学习、进步!