0x00背景

写这篇文章的原因是自己探测出了一个sql注入

采用id=1^1^1以及id=1^1^0能够得到不同的页面

但是当我正准备进行下一步注入时,D盾这只拦路虎上场了。

无论是order by又或者是select、updatexml等。

都被过滤了。

因而有了下面的尝试:

1.使用内联注入:

于是我尝试了

/*!14000select*/。很遗憾事实证明,,/**/也被过滤了。内联注入失败

2.使用hpp污染:

接下来我尝试id=1&id=1^1^select   失败。感觉只要出现关键字不敢是哪个即使是重复的参数也不行。
例如输入id=select&id=1会被Ban掉

3.使用换行进行绕过

接着我尝试用这样的语句:
id=1^1^union-- +%0d%0aselect
来进行换行绕过但还是无情的拦截了

4.放弃内敛注入尝试盲注。

该换盲注后:
1.尝试substr
ban
2.尝试substring
ban
3.mid没有被ban

0x∞ 过去篇

下面的是很久之前写的了:

之前部分题用到了内联注释的方式进行bypass这里再来延伸一下。

/**/在Mysql中是多行注释,所以有时候存在a/**/nd进行绕过的办法。

其实内联注入还有一种特殊的用法,当内联注入中存在!时会产生特殊情况:

我们看到

select 1 /**/ and 1=1 from users;
select 1 /*!and*/ 1=1 from users;

这两个返回结果是一样的,即使and被注释了,但由于感叹号的存在使得其依然被执行了。

那么这个可以用来做什么呢?
这个就可以用来bypass安全狗。

首先我们需要学习一下安全狗的过滤机制:
首先说一下WAF在接受请求会先做什么?
1.确认身份是否是白名单 Y->2 N->3
2.是白名单直接放过给Server
3.不是白名单,对数据包进行解析,然后送给规则系统进行处理,最后送往server.
而安全狗的规则是用的正则匹配:\s+and
安全狗现在最新版是V4.0目前我还没有了解V4.0的绕过,但之前的版本是存在绕过的。
所以网站使用了旧版安全狗也符合OWASP里面使用已知含有漏洞的组件。

根据查阅大量资料发现V4.0安全狗依然会忽视掉内联注入,下面的Payload都可bypass:

http://xxxx/index.php?a=/*&id=1 union select schema_name from information_schema.schemata--+*/

我们直接把所有的注入内容都放入内联注释里面,就成功bypass了。
除了内联注释,还看到了很多过注入的方法

方法一:a.asp?aaa=%00&id=sql语句           (貌似被用烂了)
方法二: a.asp?id=sql语句   里面把安全过滤的加个%l 比如: un%aion sel%aect 1,2,3,4 fr%aom admin