web575
给了源码
$user= unserialize(base64_decode(cookie('user')));
if(!$user || $user->id!==$id){
$user = M('Users');
$user->find(intval($id));
cookie('user',base64_encode(serialize($user->data())));
}
$this->show($user->username);
}
首先引起注意的是show()函数,前面提到这个函数可以执行php代码。所以我们只要能控制$user->username
就可以了。 处于rce的目的的话不进if我们会方便很多。 我们可以直接构造一个类,给他的来个id变量和username变量 payload:
';
}
}
namespace{
use Home\Controller\IndexController;
echo base64_encode(serialize(new IndexController()));
}
?>
bp抓包修改cookie 当然除了这个方法以外我们还知道thinkphp3.2.3存在反序列化漏洞。 正好复现一下这个漏洞。 全局搜索
__destruct
,我们要寻找存在这样可控参数调用方法的。 /ThinkPHP/Library/Think/Image/Driver/Imagick.class.php
接着全局搜索
function destroy(
ThinkPHP/Library/Think/Session/Driver/Memcache.class.php
全局搜索
function delete(
/ThinkPHP/Library/Think/Model.class.php
我们看下我们在上一步传入的参数中$this->sessionName
是可控的,但是后面拼接了个空字符,当我们给$this->sessionName
赋值数组,接着拼接上空字符串就会出问题了。
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?