您当前的位置: 首页 >  php

yu22x

暂无认证

  • 2浏览

    0关注

    109博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

ctfshow ThinkPHP篇575

yu22x 发布时间:2021-08-05 18:05:25 ,浏览量:2

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赋值数组,接着拼接上空字符串就会出问题了。

            
关注
打赏
1617522777
查看更多评论
0.0477s