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

兩個圖片函數,上傳圖片馬即可= =

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