upload-labs pass10-16

pass10

首先看一看pass09的代码(忽略掉小漏洞= =)
在这里插入图片描述
再看一下pass10的代码
在这里插入图片描述
发现最后用的是file_name这个变量,前面很多步骤处理的是file_ext ,只有deldot处理了file_name
deldot:删除文件末尾点,有趣的是我在php手册上没搜到??

所以我们可以上传一个文件(抓包改后缀) 1.php. .

另一种方法: 先上传1.php:.jpg ,再上传 1.php<

1.php:.jpg 这类文件在上传后,在Windows中会被保存为一个 空的 1.php 文件,然后可以再上传一个 1.php<> 或者 1.php<< 或者 其他Windows不允许的后缀,就会覆盖 前边那个空的1.php

pass11

  $file_name = str_ireplace($deny_ext,"", $file_name);

这是一个替换,把黑名单中出现的后缀都替换成空的了
用双写绕过

pass12

代码:

$is_upload = false;
$msg = null;
if(isset($_POST['submit'])){
    $ext_arr = array('jpg','png','gif');
    $file_ext = substr($_FILES['upload_file']['name'],strrpos($_FILES['upload_file']['name'],".")+1);
    if(in_array($file_ext,$ext_arr)){
        $temp_file = $_FILES['upload_file']['tmp_name'];
        $img_path = $_GET['save_path']."/".rand(10, 99).date("YmdHis").".".$file_ext;

        if(move_uploaded_file($temp_file,$img_path)){
            $is_upload = true;
        } else {
            $msg = '上传出错!';
        }
    } else{
        $msg = "只允许上传.jpg|.png|.gif类型文件!";
    }
}

绕过方式:%00截断
%00使用条件:PHP小于 5.3.4,打开php的配置文件php-ini,将magic_quotes_gpc设置为Off
由于程序保存文件的路径是可以通过 URL 控制的,所以,我们可以使用 00截断的方式。
强推该文
在这里插入图片描述

pass13

和 Pass12相比,Pass 13 只不过把路径用POST方式提交了,还是可控的。
绕过方式: 0x00截断

 $img_path = $_POST['save_path']."/".rand(10, 99).date("YmdHis").".".$file_ext;

pass14-16

两个图片函数,上传图片马即可= =

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章