欢迎来到 无奈人生 安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

Ectouch2.0 分析解读代码审计流程

来源: 作者: 时间:2019-02-24 21:26 点击: 我要投稿
广告位API接口通信错误,查看德得广告获取帮助

0x1 目录结构
显示目录结构:tree -L 2 -C -d
├── _docs
├── admin //默认后台目录
│   ├── help
│   ├── images
│   ├── includes
│   ├── js
│   ├── styles
│   └── templates
├── api
│   └── notify
├── data //静态资源和系统缓存、配置目录
│   ├── assets //静态资源目录   
│   ├── attached //附件目录
│   ├── backup //备份目录
│   ├── caches //缓存目录
│   ├── captcha //验证码图片
│   ├── certificate //验证
│   ├── codetable
│   ├── ipdata
│   ├── migrates
│   ├── print
│   ├── session
│   ├── sqldata
│   └── template
├── include //核心目录
│   ├── apps //主程序(模块目录)
│   ├── base //基础程序
│   ├── classes //类文件
│   ├── config //配置文件
│   ├── helpers //助手函数
│   ├── languages //语言包
│   ├── libraries //主类库
│   ├── modules //模块
│   └── vendor //第三方扩展类
├── install //安装模块
│   ├── sqldata
│   └── templates
├── plugins //插件程序目录
│   ├── connect
│   ├── editor
│   ├── integrates
│   ├── payment
│   ├── shipping
│   └── wechat
└── themes //系统默认模版目录
    └── ecmoban_zsxn
参考链接:
ectouch第二讲之 文件结构
这样就可以确定重点是:include 文件夹
 
0x2 路由分析
入口文件index.php->引导文件bootstrap.php->urlRoute()路由解析->dispatc()路由调度
为了方便理解,我在这里分析下路由(这里有两种模式)
因为一般模式mvc都会用
/index.php?m=admin&c=index&a=index
所以在这里分析兼容模式下路由规则:
26-24 lines
        $varPath        =   C('VAR_PATHINFO');//c函数是获取配置参数的值
        $varModule      =   C('VAR_MODULE');
        $varController  =   C('VAR_CONTROLLER');
        $varAction      =   C('VAR_ACTION');
        $urlCase        =   C('URL_CASE_INSENSITIVE');
        if(isset($_GET[$varPath])) { // 判断URL里面是否有兼容模式参数
            $_SERVER['PATH_INFO'] = $_GET[$varPath]; //获取r=xx的内容给$_SERVER['PATH_INFO']
            unset($_GET[$varPath]); //释放变量
        }
41-59 lines
        $depr = C('URL_PATHINFO_DEPR'); //兼容模式分隔符 r
        define('MODULE_PATHINFO_DEPR',  $depr);   
        if(empty($_SERVER['PATH_INFO'])) {
            $_SERVER['PATH_INFO'] = '';
            define('__INFO__','');
            define('__EXT__','');
        }else{
            define('__INFO__',trim($_SERVER['PATH_INFO'],'/')); //去除多余的/
            // URL后缀
            define('__EXT__', strtolower(pathinfo($_SERVER['PATH_INFO'],PATHINFO_EXTENSION))); //获取文件后缀之后的内容
            $_SERVER['PATH_INFO'] = __INFO__;
            if (__INFO__ && !defined('BIND_MODULE') && C('MULTI_MODULE')){ // 获取模块名
                $paths      =   explode($depr,__INFO__,2);//切割__INFO__
                $module     =   preg_replace('/.' . __EXT__ . '$/i', '',$paths[0]);//处理后缀
                $_GET[$varModule]       =   $module;

[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13]  下一页

0x1 目录结构
显示目录结构:tree -L 2 -C -d
├── _docs
├── admin //默认后台目录
│   ├── help
│   ├── images
│   ├── includes
│   ├── js
│   ├── styles
│   └── templates
├── api
│   └── notify
├── data //静态资源和系统缓存、配置目录
│   ├── assets //静态资源目录   
│   ├── attached //附件目录
│   ├── backup //备份目录
│   ├── caches //缓存目录
│   ├── captcha //验证码图片
│   ├── certificate //验证
│   ├── codetable
│   ├── ipdata
│   ├── migrates
│   ├── print
│   ├── session
│   ├── sqldata
│   └── template
├── include //核心目录 无奈人生安全网
│   ├── apps //主程序(模块目录)
│   ├── base //基础程序
│   ├── classes //类文件
│   ├── config //配置文件
│   ├── helpers //助手函数
│   ├── languages //语言包
│   ├── libraries //主类库
│   ├── modules //模块
│   └── vendor //第三方扩展类
├── install //安装模块
│   ├── sqldata
│   └── templates
├── plugins //插件程序目录
│   ├── connect
│   ├── editor
│   ├── integrates
│   ├── payment
│   ├── shipping
│   └── wechat
└── themes //系统默认模版目录
    └── ecmoban_zsxn
参考链接:
ectouch第二讲之 文件结构
这样就可以确定重点是:include 文件夹
 
0x2 路由分析
入口文件index.php->引导文件bootstrap.php->urlRoute()路由解析->dispatc()路由调度 copyright 无奈人生
为了方便理解,我在这里分析下路由(这里有两种模式)
因为一般模式mvc都会用
/index.php?m=admin&c=index&a=index
所以在这里分析兼容模式下路由规则:
26-24 lines
        $varPath        =   C('VAR_PATHINFO');//c函数是获取配置参数的值
        $varModule      =   C('VAR_MODULE');
        $varController  =   C('VAR_CONTROLLER');
        $varAction      =   C('VAR_ACTION');
        $urlCase        =   C('URL_CASE_INSENSITIVE');
        if(isset($_GET[$varPath])) { // 判断URL里面是否有兼容模式参数
            $_SERVER['PATH_INFO'] = $_GET[$varPath]; //获取r=xx的内容给$_SERVER['PATH_INFO'] 内容来自无奈安全网
            unset($_GET[$varPath]); //释放变量
        }
41-59 lines
        $depr = C('URL_PATHINFO_DEPR'); //兼容模式分隔符 r
        define('MODULE_PATHINFO_DEPR',  $depr);   
        if(empty($_SERVER['PATH_INFO'])) {
            $_SERVER['PATH_INFO'] = '';
            define('__INFO__','');
            define('__EXT__','');
        }else{
            define('__INFO__',trim($_SERVER['PATH_INFO'],'/')); //去除多余的/
            // URL后缀

copyright 无奈人生


            define('__EXT__', strtolower(pathinfo($_SERVER['PATH_INFO'],PATHINFO_EXTENSION))); //获取文件后缀之后的内容
            $_SERVER['PATH_INFO'] = __INFO__;
            if (__INFO__ && !defined('BIND_MODULE') && C('MULTI_MODULE')){ // 获取模块名
                $paths      =   explode($depr,__INFO__,2);//切割__INFO__
                $module     =   preg_replace('/.' . __EXT__ . '$/i', '',$paths[0]);//处理后缀
                $_GET[$varModule]       =   $module;
copyright 无奈人生

[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13]  下一页

www.wnhack.com

。 (责任编辑:admin)
【声明】:无奈人生安全网(http://www.wnhack.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱472701013@qq.com,我们会在最短的时间内进行处理。