整个程序是thinkphp的改版
首先是初始化应用,里面包含一个路由解析Route::parseUrl();
这里$_GET[C("VAR_MODULE")] 就是module值,$_GET[C('VAR_CONTROLLER')] 是controller值,$_GET[C('VAR_ACTION')]就是action值。最后调用了一个serconst方法
这里面定义了MODULE,CONTROLLER,ACTION。 到这里为止,MODULE,CONTROLLER,ACTION都没有任何过滤。
在继续看init方法中后面部分:
首先定义了modulepath :
define('MODULE_PATH',APP_PATH.$_GET[C('VAR_GROUP')].'/'.MODULE.'/');
这样MODULE_PATH可以被控制了,再看后面的define操作:
define('MODULE_CONFIG_PATH', MODULE_PATH . 'Config/');
is_file(MODULE_CONFIG_PATH . 'config.php') and C(require(MODULE_CONFIG_PATH . 'config.php'));
这里require(MODULE_CONFIG_PATH . 'config.php') 就可以被直接利用实现文件包含
poc:index.php?m=../test.jpg%00