PHPMyWind绕过过滤SQL注入(限定条件)

漏洞作者: agnes0621

PHPMyWind设计缺陷绕过过滤SQL注入

详细说明:

我会在标题里面告诉你们其实是全局变量覆盖吗?需要register_globals=on。 /include/common.inc.php 注册变量的代码:

foreach(array('_GET','_POST') as $_request)
{
	foreach($$_request as $_k => $_v)
	{
		if(strlen($_k)>0 &&
		   preg_match('#^(GLOBALS|_GET|_POST|_SESSION|_COOKIE)#',$_k))
		{
			exit('不允许请求的变量名!');
		}

		${$_k} = _RunMagicQuotes($_v);
	}
}

看到这里,懂的人就懂了。代码中匹配了GLOBALS来禁止提交全局变量GLOBALS防止变量覆盖,但是只对$_GET和$_POST进行了检查,因此只要在$_COOKIE中提交即可绕过RunMagicQuotes。

漏洞证明:

注入点可能有很多,举一个例子吧:phpmywind/product.php

这里我们添加一个cookie名字叫GLOBALS[keyword] 051023295f822cd6e3ef939f1051af9e1b51a54e[2]   打印一下$keyword: 05102431077aba961242a7bd042ae52d61279db7[1]   绕过了过滤,引入了' payload: 0510251225c9888a9062d3cfb242ca0193be9423[1]

发表评论