http://localhost/upload-labs/upload//6220210719132942.jpg
上传一个冰冰,可见本次上传的文件进行了重命名!!!
接着上传php探针,查看回显!!!!
这题有一个地方非常特殊!!!
URL!!!
http://localhost/upload-labs/Pass-12/index.php?save_path=../upload/
通过URL可以了解到upload文件夹与Paas-12文件夹位于同一个目录!!!
好的吧!!!
我们在这里试着将探针文件上传到Paas-12文件夹内 !!!!
上传地址!!!咱们这里再上传一个冰冰!!
http://localhost/upload-labs/Pass-12/index.php?save_path=../Pass-12/
http://localhost/upload-labs/upload//2520210719135928.jpg
但是没有上传成功,这是咋回事!!!
我们看一下前台的源码!!
我们试着在这里修改一下地址试试!!!
改成这!!!!
可见上传地址已经修改!!!可以正常上传!!!
http://localhost/upload-labs/Pass-12/index.php?save_path=../
http://localhost/upload-labs//6120210719140423.jpg
我们在上传一个探针试试!!!
还是有过滤!!!无法上传!!!!
看了大佬的WP,这里的问题是%00截断,绕过!!!
我们查看一下源代码吧!!!
$ext_arr = array(‘jpg’,’png’,’gif’); $file_ext = substr($_FILES[‘upload_file’][‘name’],strrpos($_FILES[‘upload_file’][‘name’],”.”)+1);
//获取上传文件的扩展名!!!
PHP$_FILES 是一个预定义的数组,用来获取通过 POST 方法上传文件的相关信息。
substr(string,start,length)
substr() 函数返回字符串的一部分。
注释:如果 start 参数是负数且 length 小于或等于 start,则 length 为 0。
length 可选。规定被返回字符串的长度。默认是直到字符串的结尾。
strrpos() 函数查找字符串在另一字符串中最后一次出现的位置。
注释:strrpos() 函数对大小写敏感。
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;
in_array() 函数搜索数组中是否存在指定的值。
注释:如果 search 参数是字符串且 type 参数被设置为 TRUE,则搜索区分大小写。
in_array(search,array,type)
search |
必需。规定要在数组搜索的值。 |
array |
必需。规定要搜索的数组。 |
type |
可选。如果设置该参数为 true,则检查搜索的数据与数组的值的类型是否相同。 |
如果给定的值 search 存在于数组 array 中则返回 true。如果第三个参数设置为 true,函数只有在元素存在于数组中且数据类型与给定值相同时才返回 true。如果没有在数组中找到参数,函数返回 false。注释:如果 search 参数是字符串,且 type 参数设置为 true,则搜索区分大小写。
if(move_uploaded_file($temp_file,$img_path)){ $is_upload = true; } else { $msg = ‘上传出错!’; }
move_uploaded_file() 函数将上传的文件移动到新位置。
若成功,则返回 true,否则返回 false。
move_uploaded_file(file,newloc)
file |
必需。规定要移动的文件。 |
newloc |
必需。规定文件的新位置。 |
注释:本函数仅用于通过 HTTP POST 上传的文件。
这个移动完会修改为新的名字!!!
看了大佬的WP的,我终于理解:存在漏洞的代码在这一条!!!!!
$img_path = $_GET[‘save_path’].”/”.rand(10, 99).date(“YmdHis”).”.”.$file_ext;
而且采用这种上传需要满足两个前提条件:
- magic_quotes_gpc = Off
- php版本小于3.4
我们先检查一下,我们的环境!!!
这么低版本的PHP,还真的不容易满足!!!
这个也得现改,这触发条件也太苛刻了!!!
接着开搞!!!有请工具人冰冰!!!
本来上传的信息如下:
但是由于zhifei.php后边有%00将后边内容截断,所以绕过白名单,成功上传攻击脚本!!!
如果你复制以上的内容,真正复制下来的就是一下内容!!!!!
../upload/zhifei.php
防止探针PHP:
http://localhost/upload-labs/upload/zhifei.php
成功回显!!!
来源:freebuf.com 2021-07-23 08:29:22 by: 知非知非知非
请登录后发表评论
注册