文件上传漏洞学习 6-10

 

pass-06和pass-07:文件名后缀名后加空格或点

原理:

Win下xx.jpg[空格] 或xx.jpg.这两类文件都是不允许存在的,若这样命名,windows会默认除去空格或点 此处会删除末尾的点,但是没有去掉末尾的空格,因此上传一个.php空格文件即可。

用burp抓包,将上传的文件名后缀名php后面加  空格 或者 点

他们的代码 对比前面都是 缺少去除 文件名末尾的点和首尾去空的原因

 

pass-08:          ::$DATA绕过

 

NTFS文件系统包括对备用数据流的支持。这不是众所周知的功能,主要包括提供与Macintosh文件系统中的文件的兼容性。

备用数据流允许文件包含多个数据流。每个文件至少有一个数据流。在Windows中,此默认数据流称为:$ DATA。

上传.php::$DATA绕过。(仅限windows)

不是众所周知的更能所以 程序员在写黑名单的时候会忽略

 

burp抓包修改后缀名为.php::$DATA

相比之前的代码 缺少了这一行

 $file_ext = str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA

 

 

pass-09:      一:.空格.绕过     二:Apache陌生后缀解析漏洞

 

一:点空格点  

move_upload_file的文件名直接为用户上传的文件名,我们可控。且会删除文件名末尾的点和首尾去空

 

burp抓包 改文件后缀       .php.空格.

 

二:Apache陌生后缀解析漏洞

 

burp抓包  把 文件后缀改为    .jpg.php.asd  或者  .php.asd       试了一下asd可以换成其他的

Apache 读取后缀名是从后往前读的  不认识asd后缀 继续读前面的php后缀

 

 

pass-10  :   双写后缀名绕过    代码敏感后缀名替换为空 

 

$is_upload = false; $msg = null; if (isset($_POST['submit'])) { if (file_exists(UPLOAD_PATH)) { $deny_ext = array("php","php5","php4","php3","php2","html","htm","phtml","pht","jsp","jspa","jspx","jsw","jsv","jspf","jtml","asp","aspx","asa","asax","ascx","ashx","asmx","cer","swf","htaccess"); $file_name = trim($_FILES['upload_file']['name']); $file_name = str_ireplace($deny_ext,"", $file_name); $temp_file = $_FILES['upload_file']['tmp_name']; $img_path = UPLOAD_PATH.'/'.$file_name; if (move_uploaded_file($temp_file, $img_path)) { $is_upload = true; } else { $msg = '上传出错!'; } } else { $msg = UPLOAD_PATH . '文件夹不存在,请手工创建!'; } }

 

 

 

 

 将敏感文件替换为空字符串

 

直接上传phpinfo.php  结果为:

 

burp抓包把后缀名改为

.phpphp还是被换掉

 

改为.pphphp可以了

 

转载于:https://www.cnblogs.com/liqik/p/10711912.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值