输入',有waf 输入1 and 1=1和1 and 1=2回显均正常。 感觉还是字符型注入,于是输入1' #,页面正常显示 ,感觉不像是waf,挺像是把报错界面换成了这个no error report提示,继续尝试1' and 1=1 #和1' and 1=2#,确实页面有变化,存在字符型注入,但是没有报错信息,报错注入肯定是用不了。 然后以为完事的时候,1' and union select 1,database() #,又报错了,试了一圈没发现是什么原因,改用布尔的盲注。 到查库名的时候,又报错了1' and ascii(substr(database(),1,1))>0 #,一想,这不会是逗号被过滤了,换个写法,1' and ascii(substr(database() from 1 for 1))>0 #,成了,还真是逗号被过滤了。 于是回到之前联合查询的地方,毕竟盲注手工起来看麻烦了。使用1' union select * from (select 1)a join (select 2)b #成功绕过,这也是常用的一种用join绕过,被 过滤的方式。 直接拿信息了,搞定。
使用explode()函数以,为分割转成数组,取了数组中的第一个参数作为ID。做完以后看WooYun的提示才发现,有一种更简单的方法,这种方法可以在有过滤掉注释符的使用,不使用ascii()函数,直接使用字符串进行比较来完成闭合,get!
