sqli-labs-基于布尔的盲注

来到第五关   Please input the ID as parameter with numeric value ------请用数值输入ID作为参数

构造参数?id=1' and 1=1--+    在url后面,页面显示为You are in....... 

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

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

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

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

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

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

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

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

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

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

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

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

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

 将1改成2可以直接比较后面几位

 直到全部猜解

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

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

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

 

使用substr()函数确定表名

 

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

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

你构造正确了吗    

终于得到username和password字段名

 开始猜解字段内的内容

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

到这里我们的目的基本上达成了,比如获取可供登录的账号密码或者练习布尔盲注。

谢谢观看。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值