upload-labs通关攻略(全)
upload-labs通关攻略
upload-labs是练习文件上传很好的一个靶场,建议把upload-labs关卡全部练习一遍
1.下载安装
下载地址
链接:https://pan.baidu.com/s/18a5JcD9IifW_Pwc5_bkRsA 提取码:jhks
安装
直接把他放在phpstudy的WWW目录中。(phpstudy的下载安装,可以自行百度一下)
打开
访问地址:127.0.0.1/upload-labs
问题
这里可能会遇到一个问题,burpsuite会抓不到包。这时我们只需把127.0.0.1改为本机IPv4的地址。查看本机IPv的方法:打开cmd,输入ipconfig.这样就可以正常抓包了
接下来就可以打靶了。
第一关
第一关通过右键查看源代码或者提示,我们不难发现是一个前端验证,一般前端验证都是纸老虎,形同虚设。
所以第一关的通关方法有三种:
第一就是将浏览器js代码禁用掉,右键---检查---调试器---设置---禁用JavaScript。快捷方式:f12---f1就可以了
然后就可以上传了。
这种方法有缺陷,因为禁用了js代码,如果在实战中,网站的一些正常功能可能无法显示。当然打靶通关是可以的。
第二种方法是用bp抓包工具直接将改后缀名
如果js代码是在本地运行,很可能抓不到数据包。这种方法也是不太行,同样通过第一关是可以的。
第三种方法是将网站源码复制下来,放到本地,然后将js代码删除。
右键---查看网站源代码---全部复制---创建一个记事本---将代码放进去---把记事本后缀名改为.html---用Notepad打开---找到js代码---删除
如果我们打开,是有上传文件的界面,但是不知道要上传给谁。这时我们返回到最开始,右键---检查---网络---然后上传一个正常的图片。这样我们就可以看到这个文件传给谁了。
然后我们在用Notepad打开我们自己的html文件,修改action,这个action是告诉他这个图片提交给谁,因为这个源代码中没有,我们就自己加一个。
最后用浏览器打开我们的html文件,上传。php文件即可。建议学会用第三种方法,在实战中,可能会遇到很多限制条件,第三种方法才是最完美的。
第二关
根据源代码我们可以发现,这一关是常见验证中的文件类型验证,也就是验证MIME信息
所以进行抓包,将Content-Type修改为允许上传的类型(image/jpeg、image/png、image/gif)三选一。
查看回显,发现已经上传成功
访问一下
第二关完美通关
第三关
查看源代码,我们可以发现是一个黑名单验证
上一篇讲过黑名单是规定不允许上传的文件,但是如果黑名单定义不完整的话是可以实现绕过的,用.phtml .phps .php5 .pht进行绕过。这里我们直接上传一个.php5文件
上传成功,访问看一下
因为上传上去的文件名会改变,但是在数据包中有回显(实战中可能没有),所以我们还是可以访问的。
第三关就完美通过了
注意
要在apache的httpd.conf中有如下配置代码:AddType application/x-httpd-php .php .phtml .phps .php5 .pht,如果不配置他是无法解析php5代码的,访问的时候就是一个空白页
配置过程:以phpstudy2018版本为例
1.打开其他选项单
2.打开配置文件---打开httpd.conf
3.修改代码,去掉注释符#
4.保存,重启phpstudy就可以了
第四关
这一关我们可以看到禁止上传文件可太多了
这种情况,我们可以尝试上传一个.htaccess配置文件,将4.png图片当作php代码进行解析,首先创建一个.htaccess文件,里面写上代码
<FilesMatch "4.png">
SetHandler application/x-httpd-php
这串代码的意思是如果文件中有一个4.png的文件,他就会被解析为.php,把这个文件上传上去。
上传上去之后,我们在把图片用Notepad打开,里面写上php代码。再进行上传。
最后我们访问这个4.png文件
第四关就完美通过了
注意
.htaccess文件不能起名字,他就是.htaccess文件,如果你将他改为4.htaccess或者其他的什么名字是不可以的,无法解析。在实战中有可能上传上去这个文件会被自动重命名,被重命名了就不可以了。
如果以上操作都弄好了,还是出不来,还是去改phpstudy配置文件,其他选项菜单--打开配置文件---httpd.conf
箭头指向位置一开始none,改为all保存,重启phpstudy,就可以了。
第五关
第五关其实是有些upload-labs的第九关,我也认为把这关放到第九关比较合适。如果你的第五关和我的不一样,那么我的第六关就是你的第五关,依次类推到第九关。
这一关的思路是它没有循环验证,也就是说这些收尾去空,删除末尾的点,去除字符串::$DATA,转换为小写这些东西只是验证了一次。所以我们的绕过思路就很简单,在数据包中把后缀名改为.php. .说一下他的验证过程,首先他发现有一个点,这时会把他去掉,又发现有一个空格,也会把它去掉,我们这时还有一个点,也就是.php. 由于他只是验证一次,所以不会在去掉我们的点,这时就可以上传成功,也可以解析成功。如下图:
上传成功,然后访问
第五关完美通关
第六关
看第六关的代码我们知道,这一关没有强制将大写转换为小写,所以我们可以上传纯大写或者大小写结合的后缀名
但是要注意不要和限制上传的文件后缀名写重复了。
直接上传一个后缀名为.PHP的文件
我们可以看到上传成功,访问
第六关就完美通关了。
第七关
直接看代码,发现没有收尾去空。上传php文件,抓包在后面加空格。
然后我们可以发现上传成功,访问
第七关闯关成功
第八关
第八关我们可以发现没有删除文件名末尾的点,和第七关思路一样,就是把空格换成点
然后我们可以发现上传成功,访问
第八关闯关成功
第九关
第九关查看代码发现没有去除字符串::$DATA(关于什么是::$DATA参考上一篇文章),和第七八关一样,直接上传,在数据包的php后面直接加上::$DATA
然后我们可以发现上传成功,访问
第九关闯关成功
第十关
第十关和第五关一样,第五关怎么玩,第十关就怎么玩。(好像第五关和第十关重复了,接下来的十一关有可能是你们的第十关,如果你们的upload-labs和我的一样就正常看)
第十一关
第十一关也是黑名单的绕过,他的意思是如果你上传了上面规定的文件,他就会把你的后缀名去掉,比如你上传了11.php,那么他就会把你的php过滤掉。文件没有了后缀名,自然也就无法解析了。但是他是一次过滤,也就是说我们写两个php就可以了:10.pphphp,他过滤掉一个,正好剩下了11.php。如下图所示:
上传成功,然后访问
十一关通关
总结
这些全部为黑名单绕过,而且只是验证一次,所以这些关卡全部可以用一个思路解出来,那就是.php. . 都是可以这样的,但是这就违背了创建靶场者的心思,靶场也就失去了意义,发挥不出靶场真正的作用。大家知道有这么一回事就可以了。所以大家还是按照本篇老老实实打一遍,通关不是目的,让知识得到巩固才是目的。
upload-labs(12-21关)
接下来的主要就是白名单的绕过,直接开干。
第十二关
第十二关我们看代码,可以得知是一个白名单,只允许上传'jpg','png','gif'格式的文件。但是上传路径是可以控制的,可以使用%00进行截断。%00只能用于php版本低于5.3的。这里我们需要把phpstudy切换一下版本,把magic_quotes_gpc关闭,以phpstudy为例。其他选项菜单---php扩展及设置---参数开关设置---把magic_quotes_gpc关闭。
图片就凑合看一下吧,找到位置就可以了。接下来就上传,要上传jpg文件。然后去修改地址
这里相当于上传了一个12.php文件到upload中,%00就是截断了,后面的不要了。
访问
这样就可以了,顺利通关。
第十三关
第十三关和第十二关是差不多的,只不过是接受值变成了post,她两的差别呢就是get会自行解码,post不会自行解码,我们需要对%00进行编码,选中%00右键,按下图操作来
编码好,我们就可以上传了
上传成功,访问
第十三关成功
第十四关
第十四关是用图片+php代码,组成一个图片码进行上传,当然要想解析出来这个图片,还得有这个包含漏洞。我们看到,他已经说了,网站存在包含漏洞
首先制作一个图片码,可以直接用Notepad直接打开图片后面加一个php代码,但是需要16进制,要不然图片可能出错。
也可以cmd进行生成,命令语句:copy 14.jpg /b + 14.php /a webshell.jpg 如图所示,我们在上传这个生成后的图片。
上传
访问
看一下访问的地址,因为一开始就说了有一个包含漏洞
所以地址要加上file
第十四关闯关成功。
第十五关
第十五关我们要了解一个函数
我们来看这个 getimagesize函数,这个函数的意思是:会对目标文件的16进制去进行一个读取,去读取头几个字符串是不是符合图片的要求的
所以这关还是用和14关一样的方法,生成带有php代码的图片上传,配合包含漏洞拿下此关。
上传成功,访问
十五关通关成功
十六关
第16关同14,15关思路一样,操作一样。但是需要打开php_exif,
phpstudy的其他选项菜单---打开配置文件---php-ini
重启phpstudy即可
exif_imagetype() 读取一个图像的第一个字节并检查其签名。
本函数可用来避免调用其它 exif 函数用到了不支持的文件类型上或和 $_SERVER['HTTP_ACCEPT'] 结合使用来检查浏览器是否可以显示某个指定的图像。
通过过程参考14,15关。
第十七关
第十七关主要是把二次渲染绕过
imagecreatefromjpeg()函数
二次渲染是由Gif文件或 URL 创建一个新图象。成功则返回一图像标识符/图像资源,失败则返回false,导致图片马的数据丢失,上传图片马失败。
进行通关
按照原来的方法进行上传,我们可以发现还是可以上传的,但是配合包含漏洞却无法解析,这时我们把上传的图片复制下来用Notepad打开,发现我们原来写的php代码没有了,这就是二次渲染把我们里面的php代码删掉了。
我们
把原图和他修改过的图片进行比较,看看哪个部分没有被修改。将php代码放到没有被更改的部分,配合包含漏洞,就可以了。
使用HxD Hex Editor进行比较
下载地址:https://mh-nexus.de/en/hxd
然后比较
具体实现需要自己编写Python程序,人工尝试基本是不可能构造出能绕过渲染函数的图片webshell的,知道怎么解就可以了。
第十八关
第十八关主要是对条件竞争的考察,我们看代码他是先将图片上传上去,才开始进行判断后缀名、二次渲染。如果我们在上传上去的一瞬间访问这个文件,那他就不能对这个文件删除、二次渲染。这就相当于我们打开了一个文件,然后再去删除这个文件,就会提示这个文件在另一程序中打开无法删除。
操作:直接上传一个php文件,然后进行抓包,将数据包发送至intruder下,如图操作
然后如图操作修改
再修改一下线程
然后发包,用另一个浏览器一直访问18.php地址,只要在上传的一瞬间,他还没来的及删除、修改就可以了。(卡吧)
18关完美通关。
第十九关
第十九关的上传路径有点问题,不是上传到了upload里面,建议修改一下,进入第十九关,找到myupload.php文件,如图所示修改。
重启就可以了。
这关是检查了后缀名,然后上传,然后在进行二次渲染。这时我们只能上传图片马,而且得配合解析漏洞进行通关
操作和18关的一样,就是访问地址是加上包含漏洞的。
没什么问题,这些漏洞其实都是逻辑上的漏洞,二次渲染本身是没什么问题的。如果人家先验证在进行上传那就没有办法了。
19关完美通关。
第二十关
20关是两种通关方法
第一种
move_uploaded_file()函数中的img_path是由post参数save_name控制的,可以在save_name利用%00截断(注意php版本低于5.3)。如图:
访问
由于这种前面关卡已经用过,相信作者真正用意不是考这个。
第二种
move_uploaded_file()有这么一个特性,会忽略掉文件末尾的 /.
所以我们把他修改为如图所示
访问
第二十关完美通关
第二十一关
这一关是利用数组绕过验证
访问
十九关是一个黑名单,php/.就可以绕过,但是二十关他会检测文件后缀名,是一个白名单。所以把他拆分掉第三部分是.png,所以就会上传。实际上他上传上去的东西是
upload-21.php/.png 上传上去的东西就是upload-21.php。实现了绕过。
完美通关
以上就是全部的通关攻略,由此也可以看出白名单比黑名单要安全很多。在实战中,没有代码,只能使用这些方法一个一个的去测试。
upload-labs通关攻略(全)的更多相关文章
- 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平台上唯一一款勇者斗恶龙的正传新 ...
- 打怪升级之路—Security+认证通关攻略(401还是501)
我花了一个月才把题目过完一遍的(这一个月都上班,下班抽空做几页),这里面走了很多弯路,我把备考过程整理出来希望对大家有帮助. 我是在2019年1月完成的Security+考试,离安全牛课堂直播培训结束 ...
- Untrusted 游戏 通关攻略
这个游戏还不错,用了两个晚上的时间通过并写下解法.这个游戏通过修改JS代码来通关的游戏.很考验玩家的解决问题能力,同时也有一定的可玩性. 游戏地址 http://alexnisnevich.githu ...
- Java性能调优攻略全分享,5步搞定!(附超全技能图谱)
对于很多研发人员来说,Java 性能调优都是很头疼的问题,为什么这么说?如今,一个简单的系统就囊括了应用程序.数据库.容器.操作系统.网络等技术,线上一旦出现性能问题,就可能要你协调多方面组件去进行优 ...
- Nginx通关攻略
Nginx是什么 没有听过Nginx?不要紧,一定听过它的"同行"Apache吧!Nginx同Apache一样都是一种WEB服务器.基于REST架构风格,以统一资源描述符(Unif ...
随机推荐
- pip3 install beautifulsoup4 出现错误 There was a problem confirming the ssl certificate
chenhuimingdeMacBook-Pro:groceryList Mch$ sudo pip3 install beautifulsoup4 The directory '/Users/Mch ...
- javascript Date 日期格式化 formatDate, require.js 模块 支持全局js引入 / amd方式加载
* 引入AMD加载方式: require.js CDN https://cdn.bootcss.com/require.js/2.3.5/require.js * 创建模块文件./js/util/d ...
- 『GoLang』包
可见性规则 在Go语言中,标识符必须以一个大写字母开头,这样才可以被外部包的代码所使用,这被称为导出.标识符如果以小写字母开头,则对包外是不可见的,但是他们在整个包的内部是可见并且可用的.但是包名不管 ...
- 详细的vsftpd配置
环境:CentOS 5.0 操作系统一.安装:1.安装Vsftpd服务相关部件:[root@KcentOS5 ~]# yum install vsftpd*Dependencies Resolved= ...
- 基于 Vuex 的时移操作(撤回/恢复)实现
最近做了一个 BI 平台的可视化看板编辑器,项目刚做完一期,各方面的功能都还能粗糙,但该有的也都有了,比如编辑器场景下最基本的两类时移操作-撤回(undo) 和恢复 (redo). 用 vuex 实现 ...
- 在Vue&Element前端项目中,使用FastReport + pdf.js生成并展示自定义报表
在我的<FastReport报表随笔>介绍过各种FastReport的报表设计和使用,FastReport报表可以弹性的独立设计格式,并可以在Asp.net网站上.Winform端上使用, ...
- 函数式编程 —— 将 JS 方法函数化
前言 JS 调用方法的风格为 obj.method(...),例如 str.indexOf(...),arr.slice(...).但有时出于某些目的,我们不希望这种风格.例如 Node.js 的源码 ...
- 新版发布|ShardingSphere 5.0.0-beta 来了!
Apache ShardingSphere 5.0.0-beta 版在经过长达半年的筹备后,终于将在近期正式 Release! 本文将带领大家一同预览新版本即将带来哪些重大亮点功能. 作者介绍 潘娟 ...
- 分析你的第一个Android程序
目录 分析你的第一个Android程序 Android模式的项目结构 切换项目结构模式 Project模式的项目结构 .gradle和idea app build(没有发现这个文件夹) gradle ...
- Parameter index out of range(1 > number of parameters, which is 0)参数索引超出范围
今天在写项目的过程中,有一个模块是做多选删除操作,通过servlet获得多选框的value组,然后执行sql操作.如下: 1 @RequestMapping( "/delteCouse.do ...