sql盲注

在这篇博客中我尝试着去学习和简单的介绍盲注。
那在开始之前,当然要简单的介绍一下什么是盲注。
sql盲注
之前我们有了解过,根据我们构造的payload的不同,后台数据库会返回错误提示,这给构造闭合语句的人提供了便利,但事实上,编写程序的安全人员并不会不知道这一点。为了解决这一安全问题,除了在后台设置相应的语句判断机制外,不提供对应的错误返回提示,或无论在什么情况下都提供相同的错误返回提示确实是一种降低渗透风险的方法。
而盲注就是在后台不提供返回提示的情况下构造payload的方法,其实它本身也还是一种注入方式。
盲注又分为based boolean和based time两种类型。
based boolean即基于真假的盲注。那什么是基于真假的盲注呢sql盲注
登陆到渗透练习平台。
首先打开登陆页面sql盲注
先输入单引号,看一下会有怎样的错误提示sql盲注
仅仅提示用户名错误sql盲注
构造闭合sql盲注
一样的错误提示sql盲注
是否这里就不存在注入漏洞呢,多尝试几次,这次试着用’and’逻辑判断sql盲注
发现被报出来了sql盲注
那现在应该不难想到,之所以后台会给出查询所需的数据,恰好说明刚才构造的payload包括逻辑判断语句后面的内容都被一起放到查询语句中进行运算了,这说明这里确实是存在注入漏洞的。因为稍微更改’and ‘逻辑判断语句后面的内容,用户名不存在的错误提示又会再次出现。sql盲注sql盲注
后台根据用户输入的内容如果判断为真就输出查询结果,如果为假就输出错误提示,提供的信息极少,这就是盲注。

接下来在mysql中演示对应的查询函数,这是一个正常的查询语句。
sql盲注
用subsrate进行查询sql盲注
可以看见吧p取了出来sql盲注
接着把p 转成阿斯开码,用的也是一个sql语句。sql盲注
查看结果sql盲注
可以看见p的阿斯开码就是112。那为什么要转成阿斯开码形式呢,目的是为了方便进行相关的运算
比方说将其与100做比较sql盲注
可以看见返回真。即1
将其与113比较sql盲注
可以看见返回0,即假。
基于这样的原理,在数据库中去截取一个字符,用这样的方法去进行一个判断,根据返回的结果,来判断实际错误是什么。具体举例说明。
正是由于盲注需要将字符一个个的去进行比对,所以就更需要借助相应的渗透工具,否则会非常耗时。
此外,还可有借助其他的一些函数去获得不同的返回一提高判断的准确性,例如长度计算函数sql盲注
可以看见返回提示为7个字符。
下面开始实例演示,这里展示的是闭合语句sql盲注
这里用到了获取函数和判断