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通关攻略的更多相关文章

  1. upload-labs通关攻略(全)

    upload-labs通关攻略 upload-labs是练习文件上传很好的一个靶场,建议把upload-labs关卡全部练习一遍 1.下载安装 下载地址 链接:https://pan.baidu.co ...

  2. imToken 测评通关攻略

    imToken 测评通关攻略 2017-10-19 imToken 在 1.3.3 版本新增了用户风险测评系统, 目的是为了让更多的用户了解钱包安全知识以及区块链的基本概念, 从某种程度上提升了整个区 ...

  3. Upload-labs 文件上传靶场通关攻略(上)

    Upload-labs 文件上传靶场通关攻略(上) 文件上传是Web网页中常见的功能之一,通常情况下恶意的文件上传,会形成漏洞. 逻辑是这样的:用户通过上传点上传了恶意文件,通过服务器的校验后保存到指 ...

  4. upload-labs通关攻略(1-11关)

    upload-labs通关攻略 upload-labs是练习文件上传很好的一个靶场,建议把upload-labs关卡全部练习一遍 1.下载安装 下载地址 链接:https://pan.baidu.co ...

  5. Upload-labs 文件上传靶场通关攻略(下)

    Upload-Labs靶场攻略(下) Pass-11 GET型传参,上传目录可设置,考虑00截断,在/upload/后添加1.php%00,即可上传 Pass-12 POST型传参,上传目录可设置,P ...

  6. DQ8通关攻略

    <勇者斗恶龙8>作为勇者斗恶龙系列首次实现3D的一作,游戏无论是从画面.音效还是游戏系统都表现非常不俗,这款游戏也是PS2主机上必玩的一款大作. 作为PS2平台上唯一一款勇者斗恶龙的正传新 ...

  7. Untrusted 游戏 通关攻略

    这个游戏还不错,用了两个晚上的时间通过并写下解法.这个游戏通过修改JS代码来通关的游戏.很考验玩家的解决问题能力,同时也有一定的可玩性. 游戏地址 http://alexnisnevich.githu ...

  8. 打怪升级之路—Security+认证通关攻略(401还是501)

    我花了一个月才把题目过完一遍的(这一个月都上班,下班抽空做几页),这里面走了很多弯路,我把备考过程整理出来希望对大家有帮助. 我是在2019年1月完成的Security+考试,离安全牛课堂直播培训结束 ...

  9. Nginx通关攻略

    Nginx是什么 没有听过Nginx?不要紧,一定听过它的"同行"Apache吧!Nginx同Apache一样都是一种WEB服务器.基于REST架构风格,以统一资源描述符(Unif ...

  10. Flask 通关攻略大全

    基本使用 from flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): return 'Hello ...

随机推荐

  1. 关于linux下Qt5.7.0安装中文输入法无法显示的问题

    关于linux下Qt5.7.0安装中文输入法无法显示的问题 本文是以我自己系统ubuntu-x64 + fcitx + Qt5.7.0为例: sudo apt-get install fcitx-fr ...

  2. [Pytorch框架] 5.3 Fashion MNIST进行分类

    文章目录 5.3 Fashion MNIST进行分类 Fashion MNIST 介绍 数据集介绍 分类 格式 数据提交 数据加载 创建网络 损失函数 优化器 开始训练 训练后操作 可视化损失函数 保 ...

  3. P8936 月下缭乱 Sol

    考虑对操作的区间 \([l_i,r_i]\) 的下标进行扫描线而不是对操作的值扫.用 \(m\) 个 set 动态维护 \(x_i\) 对应的操作的下标集合,再用一个可删堆来维护当前所有操作 \(x_ ...

  4. Java 新的生态型应用开发框架,Solon v2.2.14 发布

    Java 新的生态型应用开发框架,Solon :更快.更小.更简单.从零开始构建,有自己的标准规范与开放生态: 150多个生态插件,可以满足各种场景开发 大量的国产框架适配,可以为应用软件国产化提供更 ...

  5. C#自行实现安装卸载程序(不使用官方组件)

    正规软件建议还是使用官方的标准安装程序组件,因为官方的标准安装/卸载组件能更好的与操作系统衔接,安装和卸载流程更加规范. 今天提供一种野路子,全用代码实现安装卸载器. 需要写一个程序,包含安装器.卸载 ...

  6. Docker私有仓库harbor

    Docker私有仓库harbor 目录 Docker私有仓库harbor Harbor私有仓库介绍 Harbor部署 harbor页面不显示排错思路 Harbor的使用 Harbor拉镜像 自制镜像推 ...

  7. 2023-04-29:一个序列的 宽度 定义为该序列中最大元素和最小元素的差值。 给你一个整数数组 nums ,返回 nums 的所有非空 子序列 的 宽度之和 由于答案可能非常大,请返回对 109

    2023-04-29:一个序列的 宽度 定义为该序列中最大元素和最小元素的差值. 给你一个整数数组 nums ,返回 nums 的所有非空 子序列 的 宽度之和 由于答案可能非常大,请返回对 109 ...

  8. 2021-05-08:给定两个非负数组x和hp,长度都是N,再给定一个正数range。x有序,x[i]表示i号怪兽在x轴上的位置;hp[i]表示i号怪兽的血量 。range表示法师如果站在x位置,用A

    2021-05-08:给定两个非负数组x和hp,长度都是N,再给定一个正数range.x有序,x[i]表示i号怪兽在x轴上的位置:hp[i]表示i号怪兽的血量 .range表示法师如果站在x位置,用A ...

  9. 2022-01-11:给定一个正数数组arr长度为n、正数x、正数y。 你的目标是让arr整体的累加和<=0, 你可以对数组中的数num执行以下三种操作中的一种,且每个数最多能执行一次操作 : 1.

    2022-01-11:给定一个正数数组arr长度为n.正数x.正数y. 你的目标是让arr整体的累加和<=0, 你可以对数组中的数num执行以下三种操作中的一种,且每个数最多能执行一次操作 : ...

  10. transaction.atomic装饰器

    from django.shortcuts import renderfrom django.http import HttpResponsefrom django.views.generic imp ...