upload-labs 第6-20关
upload-labs关数6-20
- 第6关
- 第7关
- 第8关
- 第9关
- 第10关
- 第11关
- 第12关
- 第13关
- 第14关
- 第15关
- 第16关
- 第17关
- 第18关
- 第19关
这几关都是特殊的绕过检测方式
第6关
第六关其实没什么思路,就是对比了一下和第五关的代码发现
第六关代码没有这个
因为后缀名对大小写不敏感的问题,
我们第五关采用了大小写混合注入,那么这关,给后缀名加上留白,能否达到效果呢?我们用burp抓包修改
将.php之前加上留白,forward,ok,成功
第7关
老套路,比较第六关和第七关的不同,
发现,第七关缺少这个
意思是我们可以采用末尾加点来绕过判断机制
ok,成功
第8关
对比第七关,他少了这个
???这是个嘛呀!!!!靓仔落泪!!算了,百度一波
在php+windows的情况下:如果文件名+":: D A T A " 会 把 : : DATA"会把:: DATA"会把::DATA之后的数据当成文件流处理,不会检测后缀名. 且保持 " :: D A T A " 之 前 的 文 件 名 。 利 用 w i n d o w s 特 性 , 可 在 后 缀 名 中 加 ” : : DATA"之前的文件名。利用windows特性,可在后缀名中加” :: DATA"之前的文件名。利用windows特性,可在后缀名中加”::DATA”绕过
搜嘎,这就很明显了
检测一下,ok成功
第9关
这里和前面几关的代码比较过后发现,已经没有提示了。
$is_upload = false;
$msg = null;
if (isset($_POST['submit'])) {if (file_exists(UPLOAD_PATH)) {$deny_ext = array(".php",".php5",".php4",".php3",".php2",".html",".htm",".phtml",".pht",".pHp",".pHp5",".pHp4",".pHp3",".pHp2",".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",".htaccess");$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.'/'.$file_name;if (move_uploaded_file($temp_file, $img_path)) {$is_upload = true;} else {$msg = '上传出错!';}} else {$msg = '此文件类型不允许上传!';}} else {$msg = UPLOAD_PATH . '文件夹不存在,请手工创建!';}
比较后发现,这就是第一关补了几个漏洞
这里采用叠加注入 后缀名改为(shell.php+点+空格+点)
他每种过滤一个,咱其中一种加两个(机智如我)
测试一下
菜刀试一下,ok成功
第10关
第十关和第九关思想差不多,查看代码
他采用了替换函数,将后缀名php替换成了空格,但是,他只替换一次,咱们双写就好了。
把中间的php替换为空格后,剩下的也正好组合成php
注意 不能双写为phpphp
webshell.pphphp
测试
第11关
分析代码侯会发现,上传路径是可控的。
那么我们就采用%00截断法,在url中%00是隔断符号,相当于注释符 --+和#
将路径改为path=“upload/webshell.php%00”,那么拼接之后,文件上传时就变成了
“upload/webshell.php%00webshell.jpg”,这时上传便将.php上传进去,而.jpg则被截断
本关需要php的magic_quotes_gpc为OFF状态,所以得先在相应的php版本目录下找到配置文件php.ini,然后把magic_quotes_gpc的状态修改为OFF,修改完之后重启一下服务就可以了
第12关
分析一下源代码
$is_upload = false;
$msg = null;
if(isset($_POST['submit'])){$ext_arr = array('jpg','png','gif');$file_ext = substr($_FILES['upload_file']['name'],strrpos($_FILES['upload_file']['name'],".")+1);if(in_array($file_ext,$ext_arr)){$temp_file = $_FILES['upload_file']['tmp_name'];$img_path = $_POST['save_path']."/".rand(10, 99).date("YmdHis").".".$file_ext;if(move_uploaded_file($temp_file,$img_path)){$is_upload = true;} else {$msg = "上传失败";}} else {$msg = "只允许上传.jpg|.png|.gif类型文件!";}
}
还是熟悉的路径可控,不过这次是post传进来。
但是这次不能直接抓包在后面加上%00,因为post不会像get一样对%00进行自动解码,
所以得换另一种方法进行%00绕过,
用Burp Suite代理构造sava_path=/upload/webshell.php%00,然后再filename处修改文件拓展名为png(或jpg、gif),由于这一关不能对%00进行自动解码,所以还需要在二进制中进行修改,把webshell.php对应的二进制数后面一位改成00。
第13关
这里我们需要先制作图片木马
copy 1.jpg /b + 1.php /a shell.jpg\png\gif
之后上传即可
第14关
做法同第13关一样
只不过是换了一种检测方法
第15关
同上
这里介绍一下
exif_imagetype() 读取一个图像的第一个字节并检查其签名。 如果发现了恰当的签名则返回一个对应的常量,否则返回
FALSE。返回值和 getimagesize() 返回的数组中的索引 2 的值是一样的,但本函数快得多。
第16关
这一关,具体参照16关通关详细解说
第17关
他提示我们需要代码审计
$is_upload = false;
$msg = null;if(isset($_POST['submit'])){$ext_arr = array('jpg','png','gif');$file_name = $_FILES['upload_file']['name'];$temp_file = $_FILES['upload_file']['tmp_name'];$file_ext = substr($file_name,strrpos($file_name,".")+1);$upload_file = UPLOAD_PATH . '/' . $file_name;if(move_uploaded_file($temp_file, $upload_file)){if(in_array($file_ext,$ext_arr)){$img_path = UPLOAD_PATH . '/'. rand(10, 99).date("YmdHis").".".$file_ext;rename($upload_file, $img_path);$is_upload = true;}else{$msg = "只允许上传.jpg|.png|.gif类型文件!";unlink($upload_file);}}else{$msg = '上传出错!';}
}
这段代码重要的点在于先将文件上传到服务器,再判断后缀名,如果合法则保留下来,如果不合法,则删除在服务器的文件。
所以根据这个流程,可以通过条件竞争的方式在unlink()函数删除之前,访问上传文件,在此之前先来了解一下条件竞争
条件竞争漏洞是一种服务器端的漏洞,由于服务器端在处理不同用户的请求时是并发进行的,因此,如果并发处理不当或相关操作逻辑顺序设计的不合理时,将会导致此类问题的发生。
在burp中不断发送上传webshell的数据包,然后不断在浏览器中访问,发现通过竞争可以访问到
在嗅探抓包过程中,常见的有两种200和304。这两个状态码都关系到能否获取重要信息。当客户第一次请求服务器资源,服务器成功返回资源,这时状态码为200。所以,状态码为200的数据包往往包含用户从服务器获取的数据。
状态码200:请求已成功,请求所希望的响应头或数据体将随此响应返回。即返回的数据为全量的数据,如果文件不通过GZIP压缩的话,文件是多大,则要有多大传输量。
有200的返回码说明我们已经成功
第18关
$is_upload = false;
$msg = null;if(isset($_POST['submit'])){$ext_arr = array('jpg','png','gif');$file_name = $_FILES['upload_file']['name'];$temp_file = $_FILES['upload_file']['tmp_name'];$file_ext = substr($file_name,strrpos($file_name,".")+1);$upload_file = UPLOAD_PATH . '/' . $file_name;if(move_uploaded_file($temp_file, $upload_file)){if(in_array($file_ext,$ext_arr)){$img_path = UPLOAD_PATH . '/'. rand(10, 99).date("YmdHis").".".$file_ext;rename($upload_file, $img_path);$is_upload = true;}else{$msg = "只允许上传.jpg|.png|.gif类型文件!";unlink($upload_file);}}else{$msg = '上传出错!';}
}
这里先用move函数将上传的文件保存,再用renameFile函数重命名。所以也存在条件竞争,绕过方法和上面Pass-17差不多。
第19关
这关采取00截断法
先更改保存的文见名称
在用burp将save_name那里的webshell.php.jpg中php后面的点的十六进制(2e)改为00
upload-labs 第6-20关相关推荐
- Upload labs
Pass -01(js检查) 题目基于前端js过滤,只能上传图片格式的文件,所以我们用一句话木马,改后缀上传后,用burp抓包,修改文件后缀为php,然后用蚁剑连接, 注意: 文件没有上传在具体题目中 ...
- XSS挑战之旅[全20关]上
Contents 文章目录 靶场简介 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x10 靶场简介 由来:这是Xss平台免费提供的一个xss靶场,网址为 ...
- upload靶场第一-二十一关
目录 upload第一关(js前端验证) upload第二关(content-type验证) upload第三关 upload靶场第四关 upload第五关 upload第六关(大小写绕过) uplo ...
- (白帽子学习笔记)前渗透——文件上传upload labs
读者需知 1.本文仅供学习使用,由于传播和利用此文所造成的损失均由使用者本人负责,文章作者不为此承担责任 2.本文参考了一些文章,如有侵权请联系本人删除 第一关--前端验证 1.将浏览器中的JS代码禁 ...
- upload -labs通关解析及上传类型总结和思考
Pass-01(客户端JS绕过) 客户端JS判断方法:上传一个php文件,用bp抓包,如果没抓到包就弹框说不能上传,就说明是客户端JS检测 客户端JS绕过方法: 方法一: 上传一个图片马格式为jpg, ...
- Upload LABS Pass-11
第十一关在服务端使用了白名单 , 但文件保存路径外漏 , 可以使用00截断 准备一个 11.php 文件 , 内容为一句话木马 <?php eval($_POST[-7]);?> 上传 1 ...
- Upload LABS Pass-10
第十关在后端使用了黑名单 , 将匹配到的后缀名替换为空,使文件不能使用 , 但其只过滤了一遍 , 我们可以使用双写后缀名的方式绕过黑名单 准备一个 10.pphphp 文件 , 内容为一句话木马 &l ...
- Upload LABS Pass-9
第九关在后端使用了黑名单,并过滤了大小写,空格,点以及数据流 , 但未对文件重命名并且只过滤了一遍点和空格 , 我们在文件后缀名添加 点空格点 , 来绕过黑名单 准备一个 9.php 文件 , 内容为 ...
- Upload LABS Pass-8
第八关在后端使用了黑名单 , 并过滤了大小写,点以及空格 , 但并未过滤数据流 , 我们使用代理拦截请求,在文件后缀名中添加数据流,绕过黑名单 准备一个 8.php 文件 , 内容为一句话木马 < ...
- Upload LABS Pass-7
第七关在后端使用了黑名单 , 并过滤了大小写,空格 , 但未过滤点 , 我们使用代理拦截请求,将后缀名添加点. , 来绕过黑名单 准备一个 7.php 文件 , 内容为一句话木马 <?php e ...
最新文章
- Remoting技术简介
- 全球及中国临床试验支持服务行业十四五规模发展及应用前景调研报告2022-2027年
- 趣学python3(1)-f前缀格式化字符串文本
- 捣鼓了一个月的SharePoint
- PyTorch官方教程中文版:PYTORCH之60MIN入门教程代码学习
- pps服务器未响应_pps服务器未响应停止播放怎么解决
- c++中的enum类
- Word删除表格后的空白页
- 测试流程||功能测试
- 遥感图像——几何畸变和几何校正
- 中医药天池大数据竞赛——中医文献问题生成挑战(二)
- 【奋斗人生】心得日记(20191112至20191230)
- android app应用签名生成工具,Android APK生成证书并签名方法
- Java 面向对象(下) 抽象类 继承类 编写Application程序: 定义抽象类Shapes,其中包含抽象方法:
- 《Neural Architectures for Nested NER through Linearization》
- Cglib入门到使用
- 微软十五道面试题 答案
- 雷哥爱财,取之有道:4个月取了4000块
- ffmpeg解码内存中的数据
- [创业] 美国互联网广告07年总开支255亿美元, 增长27%
热门文章
- 论文笔记——Adversarial Patch(对抗补丁)
- 获取某年的第一天和最后一天
- mysql-数据更新操作
- 通信原理与MATLAB(九):DPSK的调制解调
- 2018东北大学计算机报录比,考研|东北大学2018-2020年硕士研究生各学院各专业报录比汇总!...
- 【文献阅读02】基于模拟RRAM支持全并行乘累加运算的全集成78.4TOPS/W存算芯片
- 系统自学R的第十二天#参考书籍《R语言编程艺术》
- ubuntu 星火商店
- lol多玩盒子 v4.2.9 官方版
- 计算机专业评副高需要发论文吗,高级职称评审一般都需要几篇论文呢