sqli-labs Basic Challenges Less 15-16

Less 15  POST - Blind- Boolian/time Based - Single quotes

根据题目判断这一关是基于布尔或者时间的单引号字符型盲注,并且参数提交方式是post。

先分别用测试账号和正确账号登录观察页面响应

这是用测试账号登录的响应

这是用正确账号登录的响应

可以看到登陆成功与否变化的只有底部的图片,并没有什么显示位。

先判断sql查询语句的结构,添加单引号测试

看到仅仅是显示登录失败并没有报错信息,猜测可能参数是被双引号包裹的,接着再添加双引号测试

但是发现依然只是返回登录失败,也没有报错信息。这里可能是服务器端处理了报错信息,所以只能依靠登录成功或者失败两种状态来盲注了。

首先注释掉后面的语句看是否能够成功登陆,先对单引号尝试

可以看到页面响应登录成功了,说明参数就是被单引号包裹的。

那么既然已经知道查询语句的结构了,接下来就是靠盲注来获取数据了。这里有基于布尔和时间两种,我们一一进行尝试。

1、基于布尔的盲注

在刚才的测试中我们已经知道登录之后只会有登录成功和失败两种状态,所以这里用基于布尔的盲注方法。

先确定当前用户名的长度

通过对比我们可以确定当前用户名的长度就是14,那么接下来就是手工测试用户名的具体内容了

可以看到当前用户名的前四个字符就是root。接下来就是一一确定数据库名、表名、字段名以及列出字段内容了。

这里省略中间的内容,直接测试字段的内容

这里可以看到users表中第一行的用户名的前四个字符就是Dumb了。在基于布尔的盲注中ascii()函数和substr()函数通常是结合使用的。

2、基于时间的盲注

上述过程是用的基于布尔的盲注,接下来看看基于时间的盲注吧。

根据页面响应的时间来看这里sleep()函数是成功带入数据库执行了的。所以这里可以用基于时间的盲注方法。

这里用时间盲注的方法确定一下当前用户名的前四个字符是否是root。

从请求的内容与响应时间来看,这里的sleep()函数成功执行了,说明if()函数的第一个条件成立。也就是说当前用户名前四个字符就是root。那么之后对其他数据的判断也是基于if()函数和sleep()函数的结合使用,具体就不再演示了。

 

Less 16  POST - Blind- Boolian/Time Based - Double quotes

从题目来看,这一关跟上一关的不同之处就在于参数是被双引号包裹的,至于注入方法上是没有区别的。

这里先确认一下参数是否是被双引号包裹的

这里返回登录失败了,说明直接添加双引号不起作用啊。再添加一个)试试看。

可以看到成功登陆了,说明题目给的信息不够准确,参数确实是被双引号包裹着的,但是外部还被()所包裹。

这里确认了查询语句的结构,接下来的注入过程就跟上面的盲注过程是一样的,此处就不再赘述了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值