和谐的8零
百度空间 | 百度首页 
 
文章列表
 
2009-06-22 19:04
看的是v6版的,在do/job.php文件:

...
}elseif(ereg("^([-_0-9a-zA-Z]+)$",$_GET[job])||ereg("^([-_0-9a-zA-Z]+)$",$_POST[job])){
    require(dirname(__FILE__)."/"."global.php");
    if(is_file(PHP168_PATH."inc/job/$job.php")){
        include(PHP168_PATH."inc/job/$job.php");
    }
}

嗯,如果开了全局的话,就可以用gpc的变量注册顺序来pass那个正则判断,不过php168很友善的搞了个模拟register_globals=on的功能,在inc/common.inc.php文件:

...
if(!ini_get('register_globals')){
    @extract($_COOKIE,EXTR_SKIP);
    @extract($_FILES,EXTR_SKIP);
}

foreach($_POST as $_key=>$_value){
    !ereg("^\_[A-Z]+",$_key) && $$_key=$_POST[$_key];
}
foreach($_GET as $_key=>$_value){
    !ereg("^\_[A-Z]+",$_key) && $$_key=$_GET[$_key];
}
...

嗯,可以很容易的pass上面的判断了,不过这里的变量注册顺序和gpc默认的变量注册顺序是有些不同的:)
 
2009-06-19 13:19
昨天php5.2.10出来了,fix了PCH-006里提到的bug:

Fixed bug #45997 (safe_mode bypass with exec/system/passthru (windows only))

然而遗憾的是还有问题,看看php是咋fix这个的:

...
        b = strrchr(cmd, PHP_DIR_SEPARATOR);
#ifdef PHP_WIN32
        if (b && *b == '\\' && b == cmd) {
// 注意标红的代码:p
            php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid absolute path.");
            goto err;
        }
#endif
...

恩,fix后执行exec('\dir')会报错,但是exec('80vul\b\dir')依旧会执行:)
还有就是这个bug和php_escape_shell_cmd函数的处理方式有关,即使是php_exec_ex函数fix了,其他的函数调用时没有处理好呢?
 
     
 
 
最新评论
 
文章评论|照片评论


像www.g.cn的
 

继续顶
 

顶 bw:楼上的头像是啥?
 

 
     
 
最近访客
 
 

pythond

amaze_

Mr_Xhming

bnzm5270

raystyle

w3bshe77

findugs

woshihuanquan
     
 
订阅我的空间
 
已有人次访问本空间
 
订阅RSS  什么是RSS?

您也想拥有这样的空间?请点此申请。
     


©2009 Baidu