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 ...
随机推荐
- vue中获取所有路由
在router实例上有options属性:
- js中数组的sort() 方法
sort() 方法用于对数组的元素进行排序,并返回数组.默认排序顺序是根据字符串UniCode码.因为排序是按照字符串UniCode码的顺序进行排序的,所以首先应该把数组元素都转化成字符串(如有必要 ...
- Python-webdriver_manager的简单使用
前言: 提前祝大家五一快乐(*^▽^*) 我们在使用Selenium做UI自动化时都需要手动去下载各个浏览器版本的webdriver,有时我们可能还会遇到跨操作系统去进行测试. 以及有时因浏览器自动升 ...
- Python-zmail发送简单邮件
简介: Zmail 使得在python3中发送和接受邮件变得更简单.你不需要手动添加服务器地址.端口以及适合的协议,zmail会帮你完成.此外,使用一个python字典来代表邮件内容也更符合直觉 安装 ...
- 【经验分享】使用Windows自带Xbox显示游戏帧率
环境: 工具:Xbox Game Bar 系统版本:Windows 10 快捷键:win + G 需求描述: 描述:需要实时显示当前游戏的帧率和硬件的占用率情况.如下图: 实现方法: 1.按下组合键w ...
- go测试库之apitest
前言 使用go语言做开发差不多快一年了,主要用来写后端Web服务,从一开始吐槽他的结构体,比如创建个复杂的JSON格式数据,那是相当的痛苦.还有 err 处理写的巨麻烦. 当然,go 也有爽的地方,创 ...
- java.sql.SQLException: The connection property 'useSSL' only accepts values of the form: 'true', 'false', 'yes' or 'no'. The value 'true;' is not in this set.
错误说明: 数据库连接属性"useSSL"的值只能为'true','false','yes','no',多余的都不行 因此我们要到数据库的连接属性(properties)里找答案 ...
- 流计算中kafka的OffsetReset策略
朋友的公司做的是西南某边境省份网红新能源车的数据处理,由于新能源车的火爆,从年初从现在,数据量已经翻番.但与此同时,服务器却没有多少增加.无奈之下,只能暂时将kafka的数据存储时间由之前的1天改为6 ...
- python通过变量名称的反射,获取变量的引用
有一些极端情况下,例如变量名称是动态的,我们无法直接调用变量名,如何获取到变量的引用呢? aa = [globals()["xxxx"]]
- SpringMVC 简单的开始
SpringMVC简单的开始 利用Spring模板配置写一个web项目. 1.核心配置文件(模板代码) <?xml version="1.0" encoding=" ...