0 基础支撑功能
0.1 路由功能
0.2 模版解析

* zzzphp V1.6.0 的代码执行漏洞,模版解析功能的问题
程序解析模版时,将模版中的部分内容匹配出来直接传递给了eval,且没有经过过滤

    public
    function parserIfLabel($zcontent)
    {
        $pattern = '/\{if:([\s\S]+?)}([\s\S]*?){end\s+if}/';
        if (preg_match_all($pattern, $zcontent, $matches)) {
            $count = count($matches[0]);
            for ($i = 0; $i < $count; $i++) {
                $flag = '';
                $out_html = '';
                $ifstr = $matches[1][$i];
                $ifstr = str_replace('<>', '!=', $ifstr);
                $ifstr = str_replace('mod', '%', $ifstr);
                $ifstr1 = cleft($ifstr, 0, 1);
                switch ($ifstr1) {
                    case '=':
                        $ifstr = '0' . $ifstr;
                        break;
                    case '{':
                    case '[':
                        $ifstr = "'" . str_replace("=", "'=", $ifstr);
                        break;
                }
                $ifstr = str_replace('=', '==', $ifstr);
                $ifstr = str_replace('===', '==', $ifstr);
                @eval('if(' . $ifstr . '){$flag="if";}else{$flag="else";}');
                if (preg_match('/([\s\S]*)?\{else\}([\s\S]*)?/', $matches[2][$i], $matches2)) { // 判断是否存在else
                    switch ($flag) {
                        case 'if': // 条件为真
                            if (isset($matches2[1])) {
                                $out_html .= $matches2[1];
                            }
                            break;
                        case 'else': // 条件为假
                            if (isset($matches2[2])) {
                                $out_html .= $matches2[2];

                            }
                            break;
                    }
                } elseif ($flag == 'if') {
                    $out_html .= $matches[2][$i];
                }

                // 无限极嵌套解析
                $pattern2 = '/\{if([0-9]):/';
                if (preg_match($pattern2, $out_html, $matches3)) {
                    $out_html = str_replace('{if' . $matches3[1], '{if', $out_html);
                    $out_html = str_replace('{else' . $matches3[1] . '}', '{else}', $out_html);
                    $out_html = str_replace('{end if' . $matches3[1] . '}', '{end if}', $out_html);
                    $out_html = $this->parserIfLabel($out_html);
                }

                // 执行替换
                $zcontent = str_replace($matches[0][$i], $out_html, $zcontent);
            }
        }
        return $zcontent;
    }

1 安装
2 关于我们
3 查看列表
4 查看内容
5 查看品牌列表
6 查看品牌内容
7 留言
8 搜索
9 前台验证机制
9.1 注册
9.2 登陆
9.3 找回密码
10 会员中心
11 后台登陆
12 后台首页
12.1 显示统计信息
12.2 显示系统状态和cms状态
12.3 安全提醒
12.4 显示天气
12.5 修改创始人资料
12.6 离开一会儿
12.7 安全退出
12.8 删除全部
12.9 标签管理
13 后台关于我们
14 后台新闻中心
15 后台产品中心
16 后台案例展示
17 后台品牌列表
18 后台联系我们
19 后台内容管理
20 后台栏目扩展
21 后台模版管理
22 后台静态缓存
23 后台文件管理
24 后台用户管理
25 后台插件管理
26 后台系统管理

zzzphp V1.6.0 按照功能分析漏洞的更多相关文章

  1. 读阿里巴巴Java开发手册v1.2.0之编程规约有感【架构篇】

     不为过去蹉跎,改变当下. 为什么开篇就送这么一句话给大家,我相信很多处于1-3年码龄的哥们儿们,在平时的编码历程中编码的个性可能是多彩的,每个人都有每个人特定的风格,但是我们现在这么随意写,以后这么 ...

  2. FineUI(专业版)v1.2.0 和 FineUI(开源版)v4.1.1 同时发布!

    FineUI(开源版)v4.1.1 (建议所有 v4.x 升级到此版本):http://fineui.com/demo/ +2014-08-15 v4.1.1        -修正Form中表单字段设 ...

  3. RapidJSON v1.1.0 发布简介

    时隔 15.6 个月,终于发布了一个新版本 v1.1.0. 新版本除了包含了这些日子收集到的无数的小改进及 bug fixes,也有一些新功能.本文尝试从使用者的角度,简单介绍一下这些功能和沿由. P ...

  4. IIS6.0文件解析漏洞小结

    今天搞站,本来这个站是aspx的,webserver是IIS6.0的,进入后台之后,发现有一个上传图片的地方,于是,我就上传了一张asp/aspx的一句话图片木马,但是用菜刀连接的时候,没有成功get ...

  5. 读阿里巴巴Java开发手册v1.2.0之工程结构有感【架构篇】

    首先,把昨天那俩条sql语句的优化原因给大家补充一下,第一条效率极低,第二条优化后的,sql语句截图如下: 经过几个高手的评论和个人的分析: 第一条sql语句查询很慢是因为它首先使用了in关键字查询, ...

  6. 阿里官方Java代码规范标准《阿里巴巴Java开发手册 终极版 v1.3.0》

    终极版 v1.3.0 2017年开春之际,阿里诚意献上重磅大礼:<阿里巴巴Java开发手册>,首次公开阿里官方Java代码规范标准.这套Java统一规范标准将有助于提高行业编码规范化水平, ...

  7. 浏览器端类EXCEL表格插件 版本更新 - 智表ZCELL产品V1.1.0.1版本发布

    智表(ZCELL),浏览器下纯JS表格控件,为您提供EXCEL般的智能体验! 纯国产化.高性价比的可靠解决方案. 更新说明     让大家久等了.因为最近忙其他项目,发布时间稍有延迟.  下次版本更新 ...

  8. 智表ZCELL产品V1.4.0开发API接口文档 与 产品功能清单

    为了方便大家使用ZCELL,应网友要求,整理编写了相关文档,现与产品一起同步发布,供大家下载使用,使用过程中如有疑问,请与我QQ联系. 智表(ZCELL)V1.4.0版本  功能清单文档下载地址: 功 ...

  9. kubernetes之Kubeadm快速安装v1.12.0版

    通过Kubeadm只需几条命令即起一个单机版kubernetes集群系统,而后快速上手k8s.在kubeadm中,需手动安装Docker和kubeket服务,Docker运行容器引擎,kubelet是 ...

随机推荐

  1. freeRTOS学习8-21

    不能再中断服务程序调用该函数 应该调用xQueueSendFromISR()

  2. Anaconda Spyder 常用快捷键

    Ctrl+1 注释.取消注释 Ctrl+4/5 块注释 / 取消块注释 Ctrl+D 删除一行 Ctrl+L 转到行 Ctrl+G/左键 查找函数定义 F9 运行选中代码 F12 断点 / 取消断点 ...

  3. 【转帖】.NET的一点历史故事:Novell的崩溃和Xamarin的重生

    .NET的一点历史故事:Novell的崩溃和Xamarin的重生 https://blog.csdn.net/sD7O95O/article/details/78096502 学习安装 mono 时了 ...

  4. Oracle-DQL 2- 限定和排序

    1.where子句--查询30号部门员工的姓名,职位和工资SELECT ename,job,sal,deptno FROM empWHERE deptno = 30; --查询职位是manager的员 ...

  5. C++类的对象和类的指针的区别

    #include <iostream> #include <string> using namespace std; class Student { public: stati ...

  6. springboot2.0结合freemarker生成静态化页面

    目录 1. pom.xml配置 2. application.yml配置 3. 使用模板文件静态化 3.1 创建测试类,编写测试方法 3.2 使用模板字符串静态化 使用freemarker将页面生成h ...

  7. CSS基础布局

    目录 css基础布局 1.布局相关的标签 2.盒子模型 2-1 什么是盒子模型 2-2 块级元素和内联元素(行内元素) 2-3 盒子模型之间的关系 盒子模型相关CSS属性 3.浮动 3-1 什么是浮动 ...

  8. L1-064 估值一亿的AI核心代码 (20 分)

    L1-064 估值一亿的AI核心代码 (20 分)   以上图片来自新浪微博. 本题要求你实现一个稍微更值钱一点的 AI 英文问答程序,规则是: 无论用户说什么,首先把对方说的话在一行中原样打印出来: ...

  9. C C语言中 *.c和*.h文件的区别!

    一个简单的问题:.c和.h文件的区别学了几个月的C语言,反而觉得越来越不懂了.同样是子程序,可以定义在.c文件中,也可以定义在.h文件中,那这两个文件到底在用法上有什么区别呢? 2楼:子程序不要定义在 ...

  10. O061、Boot from Volume

    参考https://www.cnblogs.com/CloudMan6/p/5679384.html   Volume 除了可以用作Instance的数据盘,也可以作为启动盘(Bootable Vol ...