upload-libs通关攻略
pass01

第一关是一个前端验证,只要把Javascript禁止再上传就可以绕过了。

上传成功,到上传的地址查看结果如下:

pass-02
这是一个MIME绕过,用bp抓包后修改文件类型即可将下面这个请求头修改

修该为下面 image/jpeg再发包。

通过成功。
pass-03
通过查看源码法系是一个黑名单验证,且黑名单不完善,可以用php3,php5等拓展文件名进行绕过

将文件后缀改为PHP3上传成功

pass-04
查看这关的源代码
$is_upload = false;
$msg = null;
if (isset($_POST['submit'])) {
if (file_exists(UPLOAD_PATH)) {
$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");
$file_name = trim($_FILES['upload_file']['name']);
$file_name = deldot($file_name);//删除文件名末尾的点
$file_ext = strrchr($file_name, '.');
$file_ext = strtolower($file_ext); //转换为小写
$file_ext = str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA
$file_ext = trim($file_ext); //收尾去空 if (!in_array($file_ext, $deny_ext)) {
$temp_file = $_FILES['upload_file']['tmp_name'];
$img_path = UPLOAD_PATH.'/'.date("YmdHis").rand(1000,9999).$file_ext;
if (move_uploaded_file($temp_file, $img_path)) {
$is_upload = true;
} else {
$msg = '上传出错!';
}
} else {
$msg = '此文件不允许上传!';
}
} else {
$msg = UPLOAD_PATH . '文件夹不存在,请手工创建!';
}
}
发现这次把能用的拓展名都差不多放黑名单里面了,但是漏了一个.htaccess,我们可以通过这个想办法绕过
.htaccess是一个纯文本文件,它里面存放着Apache服务器配置相关的指令。
.htaccess主要的作用有:URL重写、自定义错误页面、MIME类型配置以及访问权限控制等。主要体现在伪静态的应用、图片防盗链、自定义404错误页面、阻止/允许特定IP/IP段、目录浏览与主页、禁止访问指定文件类型、文件密码保护等
用下面的语法将xxx文件当作php执行
<FilesMatch "xxx">
SetHandler application/x-httpd-php
</FilesMatch>
这里的xxx是你上传的文件的名字,我上传的是shell.jpg

先上传.htaccess再上传shell.jpg就可以成功通关了,注意这里上传的.htaccess文件一定不要有文件名,我之前就是以为加了文件名一直没有成功将shell.jpg当php解析

pass-05
查看源码发现没有大小写验证,所以可以用大小写绕过

pass-06
对比源码发现没有去掉空格,所以可以在文件末尾加空格来绕过
pass-07
没有去除文件尾的点号,所以可以在文件末尾加点号来绕过
pass-08(::DATA上传绕过)
这一题用的是
一、利用Windows特性
在window的时候如果文件名+"::$DATA"会把::$DATA之后的数据当成文件流处理,不会检测后缀名,且保持::$DATA之前的文件名,他的目的就是不检查后缀名
例如:"phpinfo.php::$DATA"Windows会自动去掉末尾的::$DATA变成"phpinfo.php"

成功上传了,注意在访问文件路径时要去掉::$DATA
pass-09

查看源码发现过滤都很齐全了,但是只进行了一次过滤,这里可以用后缀加. .的方法绕过删除了文件末尾的第一个点后发现空格就没能再删除了


成功通关。
pass-10
查看源码发现,这次的过滤和之前不同,这次的过滤是去掉相关的黑名单后缀,但也只进行了一次过滤,所以我们可以用pphphp绕过,该过滤只会删除第一个php
1 $is_upload = false;
2 $msg = null;
3 if (isset($_POST['submit'])) {
4 if (file_exists(UPLOAD_PATH)) {
5 $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");
6
7 $file_name = trim($_FILES['upload_file']['name']);
8 $file_name = str_ireplace($deny_ext,"", $file_name);
9 $temp_file = $_FILES['upload_file']['tmp_name'];
10 $img_path = UPLOAD_PATH.'/'.$file_name;
11 if (move_uploaded_file($temp_file, $img_path)) {
12 $is_upload = true;
13 } else {
14 $msg = '上传出错!';
15 }
16 } else {
17 $msg = UPLOAD_PATH . '文件夹不存在,请手工创建!';
18 }
19 }

通关成功。
pass-11
从源码来看是一个白名单过滤,这关的关键是img_path哪里获取了一个save_path的参数,文件最后的后缀名和它有关,我们可以上传白名单的文件名,savepath上传一个php用%00将后面的字符截断
在url编码中%00就是空字符,如果是用post方法获取的参数%00就没用了,要打个+或者其他字符,再将该字符的hex改为00,(注+的hex编码是2b)

用bp抓包进行下面的操作

上传成功



解析成功,这里要注意路径的后缀不要加截断后的值
pass-12
和上一关对比只是将get获取变为了post,我们这里用同样的方法可以绕过,要注意post中不会解码%00不能当空字符用。

bp抓包修改下面的东西,然后到bp的hex中找到+对应的hex,修改为00



通关成功
pass-13
upload-libs通关攻略的更多相关文章
- upload-labs通关攻略(全)
upload-labs通关攻略 upload-labs是练习文件上传很好的一个靶场,建议把upload-labs关卡全部练习一遍 1.下载安装 下载地址 链接:https://pan.baidu.co ...
- imToken 测评通关攻略
imToken 测评通关攻略 2017-10-19 imToken 在 1.3.3 版本新增了用户风险测评系统, 目的是为了让更多的用户了解钱包安全知识以及区块链的基本概念, 从某种程度上提升了整个区 ...
- Upload-labs 文件上传靶场通关攻略(上)
Upload-labs 文件上传靶场通关攻略(上) 文件上传是Web网页中常见的功能之一,通常情况下恶意的文件上传,会形成漏洞. 逻辑是这样的:用户通过上传点上传了恶意文件,通过服务器的校验后保存到指 ...
- upload-labs通关攻略(1-11关)
upload-labs通关攻略 upload-labs是练习文件上传很好的一个靶场,建议把upload-labs关卡全部练习一遍 1.下载安装 下载地址 链接:https://pan.baidu.co ...
- Upload-labs 文件上传靶场通关攻略(下)
Upload-Labs靶场攻略(下) Pass-11 GET型传参,上传目录可设置,考虑00截断,在/upload/后添加1.php%00,即可上传 Pass-12 POST型传参,上传目录可设置,P ...
- DQ8通关攻略
<勇者斗恶龙8>作为勇者斗恶龙系列首次实现3D的一作,游戏无论是从画面.音效还是游戏系统都表现非常不俗,这款游戏也是PS2主机上必玩的一款大作. 作为PS2平台上唯一一款勇者斗恶龙的正传新 ...
- Untrusted 游戏 通关攻略
这个游戏还不错,用了两个晚上的时间通过并写下解法.这个游戏通过修改JS代码来通关的游戏.很考验玩家的解决问题能力,同时也有一定的可玩性. 游戏地址 http://alexnisnevich.githu ...
- 打怪升级之路—Security+认证通关攻略(401还是501)
我花了一个月才把题目过完一遍的(这一个月都上班,下班抽空做几页),这里面走了很多弯路,我把备考过程整理出来希望对大家有帮助. 我是在2019年1月完成的Security+考试,离安全牛课堂直播培训结束 ...
- Nginx通关攻略
Nginx是什么 没有听过Nginx?不要紧,一定听过它的"同行"Apache吧!Nginx同Apache一样都是一种WEB服务器.基于REST架构风格,以统一资源描述符(Unif ...
- Flask 通关攻略大全
基本使用 from flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): return 'Hello ...
随机推荐
- flex:1的情况下,overflow:auto没有生效的问题
flex:1的元素的父元素必须保证高度或者宽度有具体的数值:如果父元素的高度或者宽度也是flex:1自适应的,最好在父元素上也设置overflow:auto,这样子元素的overflow:auto生效 ...
- [Pytorch框架] 4.2.2 使用Tensorboard在 PyTorch 中进行可视化
文章目录 4.2.2 使用Tensorboard在 PyTorch 中进行可视化 Tensorboard 简介 Tensorboard 安装 页面 SCALAR IMAGES GRAPHS HISTO ...
- RocketMQ的简单使用
大家好,我是Leo!今天来和大家分享RocketMQ的一些用法. 领域模型介绍 Producer: 用于生产消息的运行实体. Topic: 主题,用于消息传输和存储的分组容器. MessageQueu ...
- 关于 import 和 import static
import 嘛,就是导包.比如说java的一些自带的包,例如 import java.lang.Matn: 又或者我们自己做的包,例如 import com.link.testImport; 一些实 ...
- C++ ATL + WTL 选择文件
1 #include "stdafx.h" 2 #include "CStringHelper.h" 3 #include "AFileEngine. ...
- 2020-11-19:go中,defer原理是什么?
福哥答案2020-11-19:- - 什么是defer - defer是go语言提供的一种用于注册延迟调用的机制:让函数或者语句在当前函数执行完毕(包括return正常结束或者panic导致的异常结束 ...
- 2021-08-09:给定一个有正、有负、有0的数组arr,给定一个整数k,返回arr的子集是否能累加出k。1)正常怎么做?2)如果arr中的数值很大,但是arr的长度不大,怎么做?
2021-08-09:给定一个有正.有负.有0的数组arr,给定一个整数k,返回arr的子集是否能累加出k.1)正常怎么做?2)如果arr中的数值很大,但是arr的长度不大,怎么做? 福大大 答案20 ...
- ICLR 2018-A Simple Neural Attentive Meta-Learner
Key 时序卷积+注意力机制(前者从过去的经验中收集信息,而后者则精确定位具体的信息.) 解决的主要问题 手工设计的限制:最近的许多元学习方法都是大量手工设计的,要么使用专门用于特定应用程序的架构,要 ...
- 程序员的 Windows 工具箱「GitHub 热点速览」
如何精简 Windows 并快速配置开发环境呢?本周特推的 winutil 是一个程序员的 Windows 工具箱,它提供了开发工具的一键安装以及减少系统垃圾的功能,一切为了简洁.高效.同样高效的还有 ...
- 2019年蓝桥杯C/C++大学B组省赛真题(数的分解)
题目描述: 把2019分解成3个各不相同的正整数之和,并且要求每个正整数都不包含数字2和4,一共有多少种不同的分解方法? 注意交换3个整数的顺序被视为同一种方法,例如1000+1001+18 和100 ...