sqli-labs-基于布尔的盲注

sqli-labs-基于布尔的盲注_第1张图片来到第五关   Please input the ID as parameter with numeric value ------请用数值输入ID作为参数

sqli-labs-基于布尔的盲注_第2张图片构造参数?id=1' and 1=1--+    在url后面,页面显示为You are in....... 

sqli-labs-基于布尔的盲注_第3张图片

将参数改为?id=1' and 1=2--+ 后页面不显示任何内容,由此我们可以确定这是存在sql注入漏洞的

sqli-labs-基于布尔的盲注_第4张图片

尝试使用order by x 探测一下表中字段的列数,在这里使用了3,发现有回显

sqli-labs-基于布尔的盲注_第5张图片

 将3改为4后报错,未找到该列,说明表中字段列数为3

sqli-labs-基于布尔的盲注_第6张图片

尝试用联合注入探测一下回显位,页面显示You are in..证明这是基于布尔的盲注,这一步基本没用

sqli-labs-基于布尔的盲注_第7张图片

 直接使用函数length(a)探测一下当前数据库名的长度 

length(a)函数:返回a的字符长度 

如果是length("a")则返回字符串a的长度,即1

sqli-labs-基于布尔的盲注_第8张图片

 得出大概长度后可以直接确认字符长度是否等于某个数值

sqli-labs-基于布尔的盲注_第9张图片

 接下来使用函数left(a,b)探测具体字母

字母的大小怎么比较,这个是看字母的ASCII值的,以下是大小写字母的ASCII值的对照

 函数返回的字符会和大小写字母分别比对ASCII值的,比如

sqli-labs-基于布尔的盲注_第10张图片

将其和大写字母T比较时,页面显示是正确的,这是因为大写字母S的ASCII值小于T的ASCII值 

sqli-labs-基于布尔的盲注_第11张图片

同理,猜出大致范围后可以直接比较

sqli-labs-基于布尔的盲注_第12张图片 将1改成2可以直接比较后面几位sqli-labs-基于布尔的盲注_第13张图片

 直到全部猜解

sqli-labs-基于布尔的盲注_第14张图片

 看到这里你可能会觉得这得猜多久,但事实就是没有其他的函数能够帮你缩短这个过程,比如将其转化为ASCII值,只不过是将字母换成了数字而已,对于缩短猜解时间没有帮助,在这里提供一个思路:

利用脚本或者工具,比如sqlmap等工具通过爆破数据库名,从而减少手工注入的时间成本。工具就像车辆,车辆会为你极大的提供便利,然而有些地方车辆也到不了,人却能够到达。

sqli-labs-基于布尔的盲注_第15张图片

 同理判断表名的长度,注意这里是使用了group_concat()函数,所以查询到的表名会使用逗号隔开一起查询出来   即 emails,referers,uagents,users    所以正确长度是29

sqli-labs-基于布尔的盲注_第16张图片

 sqli-labs-基于布尔的盲注_第17张图片

使用substr()函数确定表名

 sqli-labs-基于布尔的盲注_第18张图片

 艰难的猜解出第一个表名,这里还可以使用ASCII()函数

sqli-labs-基于布尔的盲注_第19张图片

sqli-labs-基于布尔的盲注_第20张图片

sqli-labs-基于布尔的盲注_第21张图片

 得到users表名,接下来猜解字段名,看到这里你不妨自己尝试构造语句,以此来检查前面的注入是否掌握。

sqli-labs-基于布尔的盲注_第22张图片

你构造正确了吗    

sqli-labs-基于布尔的盲注_第23张图片

终于得到username和password字段名

sqli-labs-基于布尔的盲注_第24张图片 开始猜解字段内的内容

sqli-labs-基于布尔的盲注_第25张图片

 成功猜解出第一个账号和密码,如果分不开的话 可以在账号和密码之间直接添加某个符号

sqli-labs-基于布尔的盲注_第26张图片到这里我们的目的基本上达成了,比如获取可供登录的账号密码或者练习布尔盲注。

谢谢观看。

你可能感兴趣的:(SQL注入练习,mysql,数据库,网络安全,学习,sql)