upload-labs-master文件上传漏洞靶场详解(1-17)
目录
前言
pass-01
pass-02
pass-03
pass-04
pass-05
pass-06
pass-07
pass-08
pass-09
pass-10
pass-11
pass-12
pass-13
pass-14
pass-15
pass-16
pass-17
本人是文件上传初学者,所以文章是按照自己做题思路写的,比较适合入门。如有错误欢迎指正!
前言
工具:phpstudy(不推荐使用小皮,因为小皮集成度和安全性较高,部分实验可能会出现错误),蚁剑或菜刀,BurpSuite,WinHex(十六进制文件编辑器)
pass-01
1.查看源代码发现只允许上传.jpg .png .gif三个类型的文件,于是把php一句话木马后缀改成.png(其他两个也行)结尾再上传。(目的是绕过前端验证)
2.一句话木马
//webshell.php
<?php
@eval($_POST['root']); //root为连接口令
?>
3.使用bp抓包,修改文件后缀
4.上传成功后是这样,把图片在新窗口打开,无报错信息说明上传成功了(文件上传成功不代表木马解析成功,要验证木马有没有解析成功要使用)
5.记住上传成功的路径(因为原路径中含有中文字符,所以插件自动使用了url编码)
做到这一步已经算完成了,后面的蚁剑连接可以不操作。想要进一步验证的可以继续往下看
6.用中国蚁剑测试连接,地址为上面那个,直接复制过来,密码为root,测试成功后添加数据
pass-02
方法一:同pass-01
方法二:
- 直接上传.php文件会报错,查看源代码发现了上传限制:
2.上传webshell.php文件,用bp拦截,修改参数Content-Type字段
3.放包,上传成功,记住路径
4.蚁剑连接
pass-03
- 先上传一个.php文件,看看报错情况,发现是黑名单验证
- 修改apache的配置文件。文件位置:phpstudy-->其他菜单选项-->打开配置问价-->httpd.conf。在文件中加入:AddType application/x-httpd-php .php .phtml .phps .php5 .pht .html,如下所示。目的是使浏览器能解析带有以下后缀的文件。保存,重启服务。
3.上传webshell.php文件,bp抓包修改为webshell.php5,因为已经在配置文件加入了.php5后缀的验证,所以.php5既可以绕过黑名单,网站也能解析。
4.在回显包中查看上传路径,用蚁剑连接
5.在用蚁剑连接时如果多次出现返回数据为空的情况有可能是浏览器还没有把木马解析成功,重启一下phpstudy服务和靶场,多试几次。如果蚁剑报错的是一长串红色代码,那可能是路径出错了。
pass-04
1.查看源代码,发现黑名单禁止了很多后缀文件通过,可以用.htaccess进行绕过。简单来说.htaccess文件的作用就是把当前目录的所有文件都当作php解析,无论上传什么文件都当作php执行。
关于.htaccess文件的详细知识请参考:(40条消息) .htaccess简介_web(song)的博客-CSDN博客_.htaccess
2.使用.htaccess的前提是①.mod_rewrite模块开启。(这项不用理会,php是默认开启的)②.AllowOverride All
(1)创建一个.htaccess文件,里面的内容为如下:这个文件的目的是把上传的.jpg文件全部转化成.php文件
(2)修改配置文件httpd.conf:
3.先上传.htaccess,再上传webshell.jpg。上传webshell.jpg的 时候用Bp抓包,可以发送到重发器,在回显包中记住路径
4.用蚁剑连接,成功
pass-05
1.直接查看源代码,发现黑名单增加了.htaccess限制,文件末尾点限制,字符串::$DATA限制和空格限制。但是没有大小写限制,可以通过大小写来绕过验证
2.将文件命名修改成webshell.PhP后上传,记住上传成功路径,蚁剑连接
pass-06
1.直接查看源代码,发现有文件后缀、.htacess、文件末尾点、字符、大小写限制,但是没有文件末尾空格限制。
2.上传webshell.php文件,抓包,在bp中将后缀末尾加一个空格,上传成功查看回显包路径,蚁剑连接
pass-07
- 直接查看源代码,发现没有文件末尾点.限制
2.上传webshell.php文件,在bp中将将后缀末尾加一个点,上传成功查看回显包路径.
pass-08
1.查看源代码,发现没有特殊字符::$DATA限制
2.修改文件名为webshell::$DATA.php.在window的时候如果文件名+"::$DATA"会把::$DATA之后的数据当成文件流处理,不会检测后缀名,且保持::$DATA之前的文件名,他的目的就是不检查后缀名.
3.上传.php文件,在bp中将将后缀末尾加::$DATA,上传成功查看回显包路径
4.上传.php文件,在bp中将将后缀末尾加::$DATA,上传成功查看回显包路径
pass-09
1.分析一下源代码,如果文件末尾有点和空格,会删除点和空格,但都只会删除一次,如果把点和空格连用,就可以绕过。
2.上传webshell.php在bp修改后缀,加上“. .”点空格点,经过解析后会删除一个点和一个空格,只剩下webshell.php.既能绕过.php后缀限制,又能解析成功
pass-10
1.使用双写绕过
pass-11
1.查看了源代码,发现使用了白名单验证,所以之前的方法都不能用了。并且$img_path这个变量是直接拼接的,所以可以用%00进行截断绕过
2.把phpstudy版本切换到低于5.3.29,并把魔术函数magic_quotes_gpc相关选项都关闭。做完之后记得把php版本改回来,不然后面的题可能会出错。
3.上传.jpg文件,在bp中修改。变量save_path= 代表路径可控,且在GET参数中,%00会自动解码,所以可以直接修改存储路径。在webshell.php后面加上%00,其后面的内容就会被阶段,上传成功后就是php文件。
pass-12
- 查看源代码,这一题的传参方法变成了POST类型
2.在POST里加%00会被认为是普通字符串,所以%00不会自动解码,要先对%00进行编码
pass-13
- 题目背景说了这题是图片马+文件按包含。于是先制作图片马。先准备一张正常图片(1.jpg),和一句话木马(webshell.php)放在同一文件夹下面,打开命令行cmd,输入以下命令:
copy 1.jpg/b + webshell.php/a PhotoShell,jpg
// /b是二进制文件,/a是ASCII文件,PhotoShell,jpg是新生成的图片马的文件
以下返回表示图片马制作成功
2.上传PhotoShell.jpg,会显示上传成功。但是这个时候网站不会把图片解析成php利用,所以要借助文件包含。因为在PHP中,使用include、require、include_once、require_once函数包含的文件都会被当作PHP代码执行,无论文件的名称是什么,只要符合文件内容符合PHP代码规范,都会被当作PHP代码执行。
3.构造文件包含路径并访问,出现乱码而非原本的图片,说明利用成功。需要注意的是,做这题的phpstudy版本要调高一点,之前在做某一题的时候把版本调成了5.3.23,需要调成5.4.45才能成功。构造路径:http://127.0.0.1/include.php?file=upload/图片名.jpg
4.蚁剑连接时,注意url地址是含有include?file那个,而不是只有图片路径的。
pass-14
1.查看源代码,使用了getimagesize函数来判断文件类型。还是可以用图片马绕过
getimagesize()函数详细知识参考:php getimagesize 函数 – 获取图像信息 | 菜鸟教程 (runoob.com)
2.其余步骤同13
pass-15
1.查看源代码,这题是利用php_exif来判断文件类型,可以用图片马绕过。
exif_imagetype()函数详细知识参考:PHP: exif_imagetype - Manual
2.在上传之前记得修改配置文件php.exif,将其打开,不然上传上去就是一片空白.改好后重启一下。
3.其余步骤同13
pass-16
- 本题是二次渲染,刚开始上传的图片会被渲染,导致原有的属性被改变。为了方便先做一张gif的图片马。(推荐使用gif)
2.利用WinHex十六进制文件编辑器,将一句话木马放到不会被改变的位置,保存
WinHex下载地址:
链接:https://pan.baidu.com/s/16Pxrz2kDU823CwjOO6TDtQ
提取码:8lk3
3.修改之后可以看到,有马图片明显比正常图片有病。上传有马图片,利用文件包含,其余步骤同13
4.上传成功
pass-17
步骤同16
upload-labs-master文件上传漏洞靶场详解(1-17)相关推荐
- 文件上传漏洞靶场--upload-labs通关过程
文件上传漏洞靶场–upload-labs通关过程 Pass-01(前端验证) 点击提示: 提示我们该文件类型不允许上传,应该是前端对文件类型进行了验证. 对于前端验证,我们有多种方法可进行绕过:但bu ...
- fileupload的回调方法_jQuery File Upload文件上传插件使用详解
本篇教程介绍了jQuery File Upload文件上传插件使用详解,希望阅读本篇文章以后大家有所收获,帮助大家对jQuery的理解更加深入. < jQuery File Upload 是一个 ...
- fileinput 时间_JavaScript_Bootstrap Fileinput文件上传组件用法详解,最近时间空余,总结了一些关...
最近时间空余,总结了一些关于bootstrap fileinput组件的一些常见用法,特此分享到phpstudy平台,供大家参考,同时也方便以后的查找.本文写的不好还请见谅. 一.效果展示 1.原始的 ...
- 文件上传漏洞靶场upload-labs学习(pass1-pass5)
Upload-Labs学习 0x00 upload-labs简介 0x01 upload-labs环境搭建 0x02 Pass1(前端判断绕过) 0x03 Pass2(content-type类型绕过 ...
- php 文件上传页面模板,PHP文件上传类实例详解
本文实例讲述了PHP文件上传类.分享给大家供大家参考,具体如下: 这里演示了FileUpload.class.php文件上传类,其中用到了两个常量,可在网站配置文件中定义: define('ROOT_ ...
- Struts文件上传与下载详解_文件的下载
在 两篇我们主要说的是文件的上传,既然有上传那就有下载,那么咱们看一下struts里面是怎么个下载法! 1.写个文件下载的表单页面: <a href="downLoad.action? ...
- Struts文件上传与下载详解 _上传多个文件
在上一篇中给大家列出的单个文件的上传,那么这一篇咱们讲讲上传多个文件改怎么作呢?由于过程和上传单个文件的类似,所以在这里不细说,相信大家都能看懂,看不懂的可以在评论区留言,我看到之后会及时回复的!! ...
- Struts文件上传与下载详解_上传单个文件
大家都知道Servlet上传文件的时候用的是commons-fileupload插件上传的,但是过程极其的麻烦,同样Struts2也有自带的文件上传,但是过程比Servlet里面的简单了不少,接下来请 ...
- SpringBoot实现文件上传下载功能详解(附带中文名称显示乱码问题的解决)
文件上传模块: 首先,需要设置一个存放上传文件的目录,可以在接口中指定,也可以在配置文件中提前设置好. 这边采用的是配置文件的形式,在application.properties中指定路径为stati ...
最新文章
- 《卫报》长文解读机器的崛起:人类越来越无法掌控它们
- 信息安全“拷问”智慧城市建设 如何解决
- python模块的函数_Python模块及函数的使用
- 【Java6】Date类/Calendar类,System类/Math类,包装类,集合,泛型,内部类
- rest api如何创建_创建一个安全的Spring REST API
- php 实现百度坐标转换,PHP实现腾讯与百度坐标转换
- android上运行java命令,Java exec()不在android上运行busybox命令
- 微课|中学生可以这样学Python(例4.3):百钱买百鸡
- 对付ring0 inline hook
- 成都这家AI语音芯片公司又融了数千万,能“偷袭”科大讯飞不?
- Java Web(一) Servlet详解!!
- 步进电机基础及工作原理
- 配置错误 访问被拒绝 解决方案
- 关于thinkpad安装win10操作系统
- IT工作人员健康指南
- 在线生成 latex 表格代码
- 【后端】消息队列--Kafka篇
- Linux读取下机数据.fq.gz文件
- 编程语言和操作系统是什么关系?编程语言如何被计算机执行的?驱动程序的理解?
- 武汉大学 杨必胜教授学术报告“点云三维信息提取与应用”心得体会与理解分析
热门文章
- 机器人武术擂台---无差别组(一)汇总贴
- 南京大学面试经验分享
- 日常交流--高情商回答
- 50米外,秒读你的“活体密码”——步态识别将带给用户更好的识别体验
- 计算机与经济学之关联刍议,工商管理本科毕业论文参考选题[1]-1
- FL Studio下载注册码激活序列号及2020新手入门基础使用教程
- mootools_Periodical
- 战舰霸主服务器维护时间多长,《战舰霸主》删档开服活动公告 福利满满![图]...
- rac安装过程中 error while loading shared libraries libpthread.so.0 问题的解决
- 天干气燥,喝什么茶来解渴?