Uploads-labs 文件上传详细wp(一)

谨以此记录学习历程,同时希望能帮助到你们。

文件上传

第一关 JS前端绕过

1. 前端验证

前端验证的概念是与后端验证所区分而来,所谓前端文件验证,即是在文件正式开始上传
之前,利如利用 javascript 脚本,对文件进行白名单或黑名单过滤,符合规则即可以向服
务器上传,不符合则拒绝上传。

2. 后端验证

后端即是服务器,当文件上传到服务器之后,再进行校验匹配文件是否符合规则,符合则
保留,不符合就删除。

JavaScript就是一种前端语言
这关利用JavaScript做了一个前端的上传文件的限制函数

function checkFile();

主要是允许JPG,PNG,GIF格式的文件上传

//定义允许上传的文件类型
var allow_ext = ".jpg|.png|.gif";

------绕过方法:

方法1. 可以禁用JS

在火狐浏览器中下载Disable Javascript插件就可以,路径也放进去了。使用的时候,只要在火狐右上角的插件栏点击这个按钮NO JS,变成这样NO JS就禁用JavaScript了。然后上传文件就不受限制了。

方法2. 修改JavaScript代码

火狐浏览器整合了firebug,所以可以直接在控制台写一个新的checkfile()函数,增加php类型的白名单,或者直接删除checkfile()内的代码。

//定义允许上传的文件类型
var allow_ext = ".jpg|.png|.gif|.php";

在这里插入图片描述
上图就是修改的代码
在这里插入图片描述
上图就是删除函数内部代码。然后上传文件就不受限制了。

第二关 MIME绕过

媒体类型(通常称为 Multipurpose Internet Mail Extensions 或 MIME 类型 )是一种标准,用来表示文档、文件或字节流的性质和格式。

常见类型:

类型描述典型示例
text表明文件是普通文本,理论上是人类可读text/plain, text/html, text/css, text/javascript
image表明是某种图像。不包括视频,但是动态图(比如动态gif)也使用image类型image/gif, image/png, image/jpeg, image/bmp, image/webp, image/x-icon, image/vnd.microsoft.icon
audio表明是某种音频文件audio/midi, audio/mpeg, audio/webm, audio/ogg, audio/wav
video表明是某种视频文件video/webm, video/ogg
application表明是某种二进制数据application/octet-stream, application/pkcs12, application/vnd.mspowerpoint, application/xhtml+xml, application/xml, application/pdf

当文件上传时利用 MIME 类型匹配文件类型时候符合要求,符合则通过不符合再拒绝。

------绕过方法:

  1. 抓包修改content-Type,content-Type指定的就是上传的这个文件的MIME类型,改为网页允许上传的文件类型就可以绕过。
Content-Type: image/gif

在这里插入图片描述

第三关 扩展名绕过(黑名单)

黑名单禁止了上传的文件

$deny_ext = array('.asp','.aspx','.php','.jsp');

------绕过方法

前提:apache的httpd.conf中有如下配置代码,在原来的代码里加入你想更改的php版本

AddType application/x-httpd-php .php .phtml .php5

在这里插入图片描述

  1. 更改文件名后缀直接上传就可以绕过了。

第四关 .htaccess(黑名单)

htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。

htaccess详解:链接: 链接: https://blog.csdn.net/cmzhuang/article/details/53537591.

这道题几乎过滤了所有的后缀名,但是可以传Apache默认支持的 .htaccess 文件。

前提·:1.mod_rewrite模块开启。2.设置AllowOverride All
在这里插入图片描述
这道题几乎过滤了所有的后缀名,但是可以传Apache默认支持的 .htaccess 文件。

$deny_ext = array(".php",".php5",".php4",".php3",".php2",".php1",".html",".htm",".phtml",".pht",".pHp",".pHp5",".pHp4",".pHp3",".pHp2",".pHp1",".Html",".Htm",".pHtml",".jsp",".jspa",".jspx",".jsw",".jsv",".jspf",".jtml",".jSp",".jSpx",".jSpa",".jSw",".jSv",".jSpf",".jHtml",".asp",".aspx",".asa",".asax",".ascx",".ashx",".asmx",".cer",".aSp",".aSpx",".aSa",".aSax",".aScx",".aShx",".aSmx",".cEr",".sWf",".swf",".ini");

------绕过方法:
先写一个.htaccess文件,将如下代码放进记事本,改后缀为.htaccess就可以了。

SetHandler application/x-httpd-php

然后上传这个.htaccess文件,就可以修改文件上传的规则了。最后再上传.php文件就可以被解析执行了。

(未完待续)

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值