tql!
前言
本来之前爆出这个反序列化链的时候,感觉这个反序列化的链子和Lavarel
爆的链子有异曲同工之妙,所以本着复现的想法整一下,然后发现了几个绕过的姿势。拿出来和师傅们交流交流,抛转引玉吧。
熟悉Yii框架
首先通过这个Hello World来了解一下这个框架的基本使用方法。这样便于我们更加快速的去了解这个框架.
即使不说,也可以知道这个其实就是一个mvc
框架。所以所有的逻辑基本上和控制器有关。所以先来讲讲控制器的使用.
控制器
这里可以看到控制器的一个基本的使用方法.
<?php
namespace app\controllers;
use yii\web\Controller;
class SiteController extends Controller
{
// ...现存的代码...
public function actionSay($message = 'Hello')
{
return $this->render('say', ['message' => $message]);
}
}
这里可以看到,Yii2这里有一个前缀action
。
Yii 使用
action
前缀区分普通方法和操作。
action
前缀后面的名称被映射为操作的 ID。
最后通过render
渲染给say
这个view
然后把message
传递过去,方便view
去渲染数据
路由
Yii
的路由又有他自己独特的味道,熟悉thinkphp的同学可能知道,thinkphp
中有一个s
参数来用来表示路由,为了是防止浏览器自动纠错导致的路由匹配不上。Yii
也有这么一个参数r
默认URL格式使用一个参数r表示路由, 并且使用一般的参数格式表示请求参数。例如,/index.php?r=post/view&id=100表示路由为post/view,参数id为100。
还有一种是美化url的格式,官网有详细例子,这里就不在赘述了,所以我们复现这里采用的是r
参数的这种方式。
复现
环境:
- php7.29
- windows
下载源码 & 设置反序列化点
这里我选用的是直接从github
上找的源码,奶权师傅的文章中有非常详细的讲解.(我composer没了就离谱
搭建好之后,写一个Hello World
测试一下环境搭建的情况。(这里注意到路由中要加一个web
才能有index.php
搭建好之后,我们吧Hello World
换成一个反序列话的点
<?php