第六关与第五关差在单引号和双引号而已,话不多说,我们传入id=1进去看看吧!
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201221230928300.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dvdTE3OTEyNDEyNTE=,size_16,color_FFFFFF,t_
此时页面回显信息为you are in…
第一步:判断注入类型,字符型还是数字型!
从报错信息不难看出注入类型为字符型,且为双引号闭合
此步证实了双引号闭合
第二步:判断字段数(使用order by)
order by 3时页面正常,order by 4时页面异常,说明有三个字段
页面有布尔类型状态,所以用布尔盲注,页面没有回显不能用联合查询,页面没有报错信息不能用报错注入。
使用length函数来判断数据库名长度是否为1,由图可以知道,因为页面回显异常,所以and length(database())=1这个条件错了。
用这种盲注的方法可以获取数据库长度,数据库名,等信息。推荐使用程序化来进行注入,否则人工会很慢。
当值为8时,页面回显正常了,说明数据库名长度为8!!
现在我们可以使用数据库中的一个函数substr()来取出数据库名的每一位来进行盲注,用来猜数据库名。第一个参数为传入字符串,第二个参数作用是取几位,第三个参数为步长
and substr(database(),1,1)=‘s’
页面回显正常,说明数据库的第一位字符是s。用同样的方法来进行猜测第二个字母,直至猜完八个字符就可以得到完整的数据库名了。(以下省略部分盲猜操作)
最终得出的数据库名为security。
然后用同样的方式来注入得到表名:emails、referers、uagents、users
再来我们盲注以下users表的字段有哪些
分别有id、username、password三个字段
下一步是利用已知表名,库名、字段名来盲猜表里面的值
同理我们就可以进行扒库啦!!!