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
兩個圖片函數,上傳圖片馬即可= =