zzzphp V1.6.0 按照功能分析漏洞
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 按照功能分析漏洞的更多相关文章
- 读阿里巴巴Java开发手册v1.2.0之编程规约有感【架构篇】
不为过去蹉跎,改变当下. 为什么开篇就送这么一句话给大家,我相信很多处于1-3年码龄的哥们儿们,在平时的编码历程中编码的个性可能是多彩的,每个人都有每个人特定的风格,但是我们现在这么随意写,以后这么 ...
- 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中表单字段设 ...
- RapidJSON v1.1.0 发布简介
时隔 15.6 个月,终于发布了一个新版本 v1.1.0. 新版本除了包含了这些日子收集到的无数的小改进及 bug fixes,也有一些新功能.本文尝试从使用者的角度,简单介绍一下这些功能和沿由. P ...
- IIS6.0文件解析漏洞小结
今天搞站,本来这个站是aspx的,webserver是IIS6.0的,进入后台之后,发现有一个上传图片的地方,于是,我就上传了一张asp/aspx的一句话图片木马,但是用菜刀连接的时候,没有成功get ...
- 读阿里巴巴Java开发手册v1.2.0之工程结构有感【架构篇】
首先,把昨天那俩条sql语句的优化原因给大家补充一下,第一条效率极低,第二条优化后的,sql语句截图如下: 经过几个高手的评论和个人的分析: 第一条sql语句查询很慢是因为它首先使用了in关键字查询, ...
- 阿里官方Java代码规范标准《阿里巴巴Java开发手册 终极版 v1.3.0》
终极版 v1.3.0 2017年开春之际,阿里诚意献上重磅大礼:<阿里巴巴Java开发手册>,首次公开阿里官方Java代码规范标准.这套Java统一规范标准将有助于提高行业编码规范化水平, ...
- 浏览器端类EXCEL表格插件 版本更新 - 智表ZCELL产品V1.1.0.1版本发布
智表(ZCELL),浏览器下纯JS表格控件,为您提供EXCEL般的智能体验! 纯国产化.高性价比的可靠解决方案. 更新说明 让大家久等了.因为最近忙其他项目,发布时间稍有延迟. 下次版本更新 ...
- 智表ZCELL产品V1.4.0开发API接口文档 与 产品功能清单
为了方便大家使用ZCELL,应网友要求,整理编写了相关文档,现与产品一起同步发布,供大家下载使用,使用过程中如有疑问,请与我QQ联系. 智表(ZCELL)V1.4.0版本 功能清单文档下载地址: 功 ...
- kubernetes之Kubeadm快速安装v1.12.0版
通过Kubeadm只需几条命令即起一个单机版kubernetes集群系统,而后快速上手k8s.在kubeadm中,需手动安装Docker和kubeket服务,Docker运行容器引擎,kubelet是 ...
随机推荐
- Web比赛4
广外2019-11-30 @广外-枯燥的抽奖 <?php #这不是抽奖程序的源代码!不许看! header("Content-Type: text/html;charset=utf-8 ...
- 【科普杂谈】IP地址子网划分
1.学习子网前的准备知识-什么是数制 现场讲解版 二进制和十进制的关系 二进制和十六进制的关系 16进制的每个位是2进制的4位 F=1111 二进制转16进制,按上面4位一组分开转 2.IP地 ...
- GIT SSH-KEY配置以及问题解决
GIT SSH-KEY 生成 我们在使用git的时候需要生成ssh key,我在这里说一下生成key和一些个性化操作,如:保存key的位置,如何解决Could not open a connectio ...
- STL set 常见用法详解
<算法笔记>学习笔记 set 常见用法详解 set是一个内部自动有序且不含重复元素的容器 1. set 的定义 //单独定义一个set set<typename> name: ...
- 剑指offer6:旋转数组的最小数字
1. 题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素.例如数组{3,4,5,1,2}为{1,2,3,4,5}的一 ...
- matplotlib库的基本使用与折线图
matplotlib:最流行的Python底层绘图库,主要做数据可视化图表,名字取材于MATLAB,模仿MATLAB构建 基本使用: x和y的长度必须一致 figure()方法用来设置图片大小 x,y ...
- 深入理解Python中的GIL(全局解释器锁)
深入理解Python中的GIL(全局解释器锁) Python是门古老的语言,要想了解这门语言的多线程和多进程以及协程,以及明白什么时候应该用多线程,什么时候应该使用多进程或协程,我们不得不谈到的一个东 ...
- Redis 键空间事件通知
出处: 使用Redis完成定时任务 场景 使用Java做过项目的人大概都用过定时器.一般来说,项目里订单模块和评论模块,都会涉及到定时任务执行.比如说: 用户下订单后,需要在5分钟内完成支付,否则 ...
- 空格 ACSII码 160 32
ascii160和ascii32都表示空格,但是在IE里,160就不是显示空格,firefox里会显示空格,32不管是firefox里,还是IE里都显示空格.
- WPF 键盘事件
private void Window_KeyDown(object sender, KeyEventArgs e) { if (e.KeyStates==Keyboard.GetKeyStates( ...