前台头像上传的地方任意文件上传

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 ([email protected]file_put_contents($new_file, base64_decode(str_replace($result[1], '', $file)))) {
                exit(dr_json(0, '目录权限不足或磁盘已满'));

接收txt的参数.然后匹配了正则.最后取出内容和文件后缀部分。再直接存盘.文件名都是统一的0x0

finecms 5.0.8低版本前台任意文件上传-
仅仅是需要记住当前用户的id就可以搞定了

webshell http://xxx.com//uploadfile/member/uid/0x0.php

修复方案:

if (preg_match('/^(data:\s*image\/(png|jpg|jpeg);base64,)/', $file, $result)){

本地实验:

上传一个->图片木马->抓包->然后将图片后缀改为php->上传->访问  http://xxx.com//uploadfile/member/uid/0x0.php->菜刀链接->结束


相关文章:

  • 2021-05-07
  • 2021-12-09
  • 2021-04-22
  • 2021-04-17
  • 2021-06-07
  • 2021-06-18
  • 2022-12-23
  • 2021-06-02
猜你喜欢
  • 2021-11-23
  • 2021-12-29
  • 2022-12-23
  • 2022-12-23
  • 2021-08-30
  • 2021-12-03
  • 2022-01-23
相关资源
相似解决方案