0x01
遇到一个网站,测试功能点http://xxx.com/news.php=3和news?=4-1页面相同,和4-2不同,判断存在注入,尝试注入,
可是有D盾
尝试用&&
绕过,成功,这里注意要进行URL编码,因为&
会被当作参数连接使用而不是普通字符
尝试substr()
函数,被过滤了。
尝试使用right(left(target,1),1)
套娃式方法,发现成功了
后面通过尝试发现后段过滤了""
,无法进行字符比对,只能比对数字,没有想到好的绕过方法,干脆采用数字来进行后续,于是语句变成了这样 ascii(right(left(database(),1),1))=123
,可是又被D盾挡了
0x02
后面通过各种尝试,发现一个特点,到目前的尝试中cid
的参数值都有1
开头,我尝试去掉1
,直接用payload
,发现可以绕过部分之前被过滤的东西,比如substr()
,可是双引号还是没绕过,我猜测substr()
是属于D盾的绕过(基于字符是否同时出现的匹配,因此在删除cid
参数值后1 &&
后可以绕过对substr()
的防护),而"
是后段代码的过滤,类似于replace()
函数
于是后面采用ascii()
进行,编写小脚本(“元旦快乐”在网站内容正常时出现过)
成功,由于没有授权,没有继续进行深入研究
0x03
本人是在门边的菜鸟一枚,平时也遇到过WAF,但总是草草略过,然后开始迷茫究竟怎么缩小和大佬之间的差距。
这次遇到D盾后尝试在网上找绕过方法,看到的都是老方法,什么%a0,%00,都已失效,本来准备放弃,但心中总有不甘心,眼前的这个站100%存在注入(虽然可能是低权限),但WAF绕不过去都是白瞎,于是我开始各种尝试,开始用mysql试验,最后幸运地成功绕过了,我也明白了最好的方法就是坚持 ,不要害怕失败。
最后,谨以此文给予与我一样仍在门边徘徊的人一丝丝信心。
转载:FreeBuf