【19】WEB安全学习----MySQL注入-4(盲注基础)

一、盲注介绍

开发人员一般禁用了所有的详细错误消息,如果发现了一个SQL注入点,但应用只提供了一个通用的错误页面;或者返回正常页面但没有我们需要的内容在上面。这些都属于SQL盲注,没有错误消息或反馈内容就不能使用之前的注入方法,而是采用SQL逻辑操作以字节方式推断数据来修改页面中的内容。

二、盲注基础知识

1、强制产生通用错误

可以通过输入正常数据与非法数据(如加个单引号),判断网页数据正常与错误的状态,错误状态一般是一个通用的错误页面或空数据等。

2、进一步测试注入点

可以提交包含副作用(攻击者可观察到)的查询,如延迟函数sleep()、逻辑语句and or等、运算符+-*/、字符串连接符等。

3、推断攻击技术

推断攻击技术均可通过观察指定请求的响应来提取至少一位信息(输入正常的语句返回正常,输入错误的语句返回错误页面)。

既然网页无法返回我们直接注入查询的结果,那么我们可以向数据库进行判断询问,如当前数据库用户是否是root等。

如通过MySQL条件判断函数进行推断。

4、二分搜索法

二分搜索(分半算法)法主要用于推断单个字节的值,不需要搜索整张字母表,通过不断拆分平均值来缩小查找范围。

如:猜一个数字(1-256)

1、该数字是否<127

2、该数字是否<63

3、该数字是否<31

4、该数字是否<15

5、该数字是否<7

6、......

通过不断分半猜,能搜小查找的次数。

任何ASCII字符都可以用1字节或8位表示,也称为八位字节,并非所有字符在数据库中都是有效的或允许的,所以我们只关注ASCII范围32 - 126,它给我们留下了一组94个字符。该范围只能用7位表示,最高有效位为0,这个可以减少我们猜解的范围。

但是,这种二分搜索法有个明显的缺点,那就是猜测每一位需要发送8次请求,每次发送的请求需要上一次请求返回结果判断才能继续发送,也就是说只有发送了第一次请求,且返回了结果,在进行结果判断,然后在发送第二次请求......,这种每次需要等待上一次结果返回,花费的时间较长。

5、按位方法

用按位方法法不需要像二分搜索法那样只能单次单次发送,可以并行同时发送7次请求,使得能快速得到一位值。

位操作法使用位操作符 & | ^来实现,具体的原理涉及到二进制的运算。

演示:这里随意出一个ascii字符,比如字符 'g',g的ascii码表数字为103。

select 103 & 128;    结果为 0 =》0

select 103 & 64;    结果为 61=》1

select 103 & 32;    结果为 32=》1

select 103 & 16;    结果为 0=》0

select 103 & 8;    结果为 0=》0

select 103 & 4;    结果为 4=》1

select 103 & 2;    结果为 2=》1

select 103 & 1;    结果为 1=》1

结果非0 的都为1,那么集合起来就是 01100111,转换到十进制为103,而ascii码表113对应字符‘g’,而ascii码表可见字符为1-128,故不需要& 128,所以用此方法猜解一个字节只需要7次查询。

实现原理:就是把字符转化成二进制,逐位判断。

128二进制   10000000

64二进制    01000000

32二进制    00100000

16二进制   00010000

8二进制     00001000

4二进制    00000110

2二进制    00000010

1二进制    00000001

6、正则表达式法

正则表达式法是二分搜索法的一种变体,使用正则表达式进行匹配字符串。

正则表达式基础:

正则表达式匹配列表
选项 说明
^ 匹配以什么字符开头
$ 匹配以什么字符结尾
. 匹配任意一个字符
* 匹配任意多个字符
+ 匹配任意至少一个字符
[a-z] 匹配[]里面的任意一个字符
[^a-z] 匹配不在[]里面的任意一个字符
{n,} 匹配前面的字符串至少n次
{n,m} 匹配前面的字符串至少n次,最多m次

7、非主流通道技术

提取SQL盲注漏洞中的数据时,使用第二类方法是借助非主流通道。区别在于推断技术依靠的是页面发送的响应,而非主流通道技术使用的是传输通道而非页面响应,传输通道包括DNS、E-MAIL、HTTP请求。好处是可以一次检索多块数据,而不是推断单个或单个字节的值。

不过很遗憾,MySQL默认配置的数据库并不支持这个非主流通道。

猜你喜欢

转载自blog.csdn.net/a15803617402/article/details/82783549
今日推荐