zoukankan      html  css  js  c++  java
  • Upload To rce 安洵杯2019 这不是上传

    0X0A
    首先我们大致审计一下 三个源码文件 
    upload.php  上传页面 inlculde了helper extend了里面的helper 类型 大致是一个上传文件的函数
    判断文件是否上传成功 如果失败则重新上传
    再来看看helper里面的函数 看到了经典的反序列化magic _destruct()调用了 view_files 方法
    view_file里面file_get_content函数可以造成rce或者任意文件读取
    那么调用在哪里呐??
    https://www.kancloud.cn/webxyl/php_oop/68881
    我们看到show.php的unserialize
    str_replace
    因为private 私有变量表示前面有* 但是你burp发过去的包进数据库时候没有经过数据处理 但是出来的时候经过了
    数据的处理的 所以我们进去的时候也要假装经过数据处理过
    函数介绍
    https://www.w3school.com.cn/php/func_string_substr.asp
    
    0x01
    $_FILES[]
    这里调用的$_FILES[$INPUT]前面定义成了file
    PHP编程语言中的常见的$_FILES系统函数用法有:
    $_FILES['myFile']['name'] 显示客户端文件的原名称。
    $_FILES['myFile']['type'] 文件的 MIME 类型,例如"image/gif"。
    $_FILES['myFile']['size'] 已上传文件的大小,单位为字节。
    $_FILES['myFile']['tmp_name'] 储存的临时文件名,一般是系统默认。
    $_FILES['myFile']['error'] 该文件上传相关的错误代码。一下为不同代码代表的意思:
    0x02
    getimagesize
    getimagesize() 函数用于获取图像大小及相关信息,成功返回一个数组,失败则返回 FALSE 并产生一条
    <?php
    list($width, $height, $type, $attr) = getimagesize("youj-logo.png");
    echo "宽度为:" . $width;
    echo "高度为:" . $height;
    echo "类型为:" . $attr;
    ?>
    0x03
    https://www.w3school.com.cn/php/func_string_substr.asp
    substr
    substr(string,start,length)
    strrchr
    strrchr() 函数查找字符串在另一个字符串中最后一次出现的位置,并返回从该位置到字符串结尾的所有字符。
    https://www.w3school.com.cn/php/func_string_strrchr.asp
    <?php
    echo strrchr("2.jpg",".");>>.jpg
    ?>
    0x04
    implode explode
    分割数组为字符串
    0x05
    fetch_assoc
    函数从结果集中取得一行作为关联数组。
    

     题目源码 github已经开源 这里我们主要注意

    在这里造成了反序列化的产生 调用了 helper里面的_des函数不必多说

    上面说的很清除了 从这里看出来进入数据库的

     只有title是可控制的 其余后缀都加了后嘴名称 所以我们通过title造成file_get_conten漏洞任意操作

     

    正常上传图片的sql语句

    正常上传图片的sql语句为:
    
    INSERT INTO images (`title`,`filename`,`ext`,`path`,`attr`) VALUES('TIM截图20191102114857','f20c76cc4fb41838.jpg','jpg','pic/f20c76cc4fb41838.jpg','a:2:{s:5:"width";i:1264;s:6:"height";i:992;}')

     paloady构造

    <?php
    class helper {
        protected $ifview = True; 
        protected $config = "";
    }
    $a = new helper();
    $b=serialize($a)
    echo $b
    ?>

     

  • 相关阅读:
    anaconda在公司内网如何避免安装过程中HTTP0的错误?(windows)
    tensorflow视频学习笔记
    RNN,LSTM,SRNN,Long Short-Term Memory as a Dynamically Computed Element-wise Weighted Sum
    全国大学生数学建模竞赛广东省分赛 A题 CT系统参数标定及成像 方法总结
    elasticsearch
    crawler
    【英语学习】 第39天翻译练习之办公室环境
    【英语学习】第三周翻译练习之出国留学
    【英语学习】第二周翻译练习之网上购物
    【英语学习】第一周翻译练习之博物馆
  • 原文地址:https://www.cnblogs.com/-zhong/p/12397397.html
Copyright © 2011-2022 走看看