文件上传之靶场upload-labs (1-10)

第一关 js 绕过

源码如下:

 

lasIndexOf是返回函数最后一次出现的地方(从右到左)

substring是用来截取函数的

indexOf是返回

表示从.出现的地方开始截取并判断是否在允许的字符串内

绕过方法:

直接burp捉包修改参数

把小马php文件后缀修改成jpg,在从burp修改php

 

 

 

 

访问路径

 

 

 第二关

 

 判断文件类型是否为图片

绕过方法

通过burp捉包修改Content-Type:

上传php文件

 

 

 

 

第三关

采用黑名单限制

上传后文件保存为路径加时间加随机数加后缀

 

 绕过方法

使用别名php3,php5,phtml进行绕过

首先打开phpstudy工具中的httpd.conf文件进行修改使他解析别名

 

 上传php文件并修改后缀

 

第四关

增加了对别名的过滤

文件保存为路径加上传文件名

 

 绕过方法

上传.htaccess文件(注: .htaccess文件生效前提条件为1.mod_rewrite模块开启。2.AllowOverride All

.htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过htaccess文件,可以实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能IIS平台上不存在该文件,该文件默认开启,启用和关闭在httpd.conf文件中配置。
文件内容为AddType application/x-httpd-php .jpg使jpg文件用解析成php
 

 

 

 

 

 

 第二种方法:Apache解析漏洞

在Apache 2.x中存在一个解析漏洞,如果我们将 lyshark.php 修改为 lyshark.php.shtml这样的格式,正常情况下会弹出文件下载提示框,但是由于Apache 2.x存在解析漏洞所以,会默认将其当作PHP脚本文件进行展开并执行。 Apache在解析文件时有一个原则,当碰到不认识的扩展名时,会从后向前解析,直到碰到认识的扩展名为止,如果不认识则会爆露其源代码,此时我们如果上传 lyshark.php.shtml的话,很明显.rar 他不认识,则会先前递增,会看到.php 默认就会使用.php 解析啦

 

 


 

 

第五关
与前面相比这一关的过滤代码缺少了将后缀转换成小写的代码

 

 绕过方法

后缀使用大小写绕过

 

 

 

 第六关

这一关少了首位去空的代码

 

绕过方法

在window下1.jpg[空格] 和1.jpg.是不允许存在的,会强制删除空格和.

 

 第七关

少了删除文件名末尾的点

 

 

 绕过方法

和第六关差不多不过这次换成了点

 

 

 

 第八关

少了去除::$data的代码

 

 绕过方法

这道题利用的是Windows下NTFS文件系统的一个特性,即NTFS文件系统的存储数据流的一个属性 a.asp::DATA 时,就是请求 a.asp 本身的数据,如果a.asp 还包含了其他的数据流,比如 a.asp:lake2.asp,请求 a.asp:lake2.asp::$DATA,则是请求a.asp中的流数据lake2.asp的流数据内容。
简单讲就是在php+windows的情况下:如果文件名+"::$DATA"会把::$DATA之后的数据当成文件流处理,不会检测后缀名.且保持"::$DATA"之前的文件名。

 

 

 

 第九关

这里的代码逻辑是先删除末尾点,在截取点后面的字符串,将字符串转换成小写并首尾去空

 

 绕过方法

这里我们可以使用点空格点的形式,同样利用了window下的特性,如果我们是在window下的环境那么3-9都可以利用点空格点

burp修改后缀为1.php为1.php. .  过滤后为1.php.

浏览器访问1.php.实际访问的是1.php可以直接访问1.php

 

 第十关

代码中只是对敏感后缀进行了一次替换

 

 绕过方法

对后缀进行双写如 pphphp

 

 

 

 

 



 

 

 

 

 



 

 

 

 

posted @ 2019-12-08 22:58  小白成长记录篇  阅读(3082)  评论(0编辑  收藏  举报