upload-labs通关历程
使用靶场前,先配置php版本为5.2,和下列对应配置。
php.ini
magic_quotes_gpc Off
php<5.3.4
httpd.conf
AddType application/x-httpd-php .php .phtml .php1 .php2 .php3 .php4 .php5 .php6 .php8 .php9 .htaccess .phP .Php
Pass1: 前端js过滤拦截,直接一句话木马更改后缀名为jpg,抓包修改包中的一句话木马的后缀为php即可完成绕过并且上传。
Pass2:①源码中可以看出增加了对文件类型的一个判断和传输,上传木马1.php.png,抓包修改后缀名即可。②直接上传php为后缀的木马,抓包修改Content-Type: application/octet-stream为Content-Type: image/gif 或png或jpeg都可以绕过并且上传。
Pass3:根据源码内容可以发现这次的过滤规则采用了黑名单的机制。通过分析源码得知一些危险的脚本解析文件后缀并没有得到过滤。可采用更改后缀名为php1或php2或php3即可绕过并且上传。
Pass4:根据源码内容发现采用了黑名单规则,并且比起pass3,过滤掉的后缀名规则更多更完善,但是它并没有过滤掉.htaccess,可更改webshell文件后缀为htaccess即可绕过并且上传。
Pass5:根据源码发现htaccess后缀名也被设为黑名单。根据源码对应的过滤规则得出payload为.php. .,抓取数据包后在在文件名末尾加上点空点即可进行过滤。
Pass6:根据源码内容发现没有过滤规则为文件名是否为大小写,将webshell文件的后缀名改为大写,即可绕过并且上传。
Pass7:根据源码内容,发现过滤规则并没有对文件名末尾的空格进行过滤,抓取数据包,在webshell文件名末尾加上空格,即可绕过并且上传。
Pass8:根据源码内容,发现过滤规则并没有对文件名末尾的点进行过滤,抓取数据包,在webshell文件名末尾加上点,即可绕过并且上传。
Pass9:根据源码内容,发现过滤规则并没有对::$DATA进行过滤,抓取数据包,在webshell文件名末尾加上::$DATA,即可绕过并且上传。在使用webshell连接工具连接时须要删除::$DATA后才可以正常连接,因为在windows中文件名规则中::$DATA是会被丢弃掉的。具体www.baidu.com。
Pass10:和pass5一样的规律,可以. .方式进行过滤。
Pass11:根据源码内容发现了这次时对关键字的直接替换为空(空值),可通过算双写绕过法,webshell文件名为1.pphphp即可绕过并且上传。
Pass12:通过源码发现该点是利用了白名单的上传法,使用的是get的方法进行对数据的一个传参。并且通过save_path文件进行传参,内容中发现有”/”和$file_ext说明该参数为可控的。可采用%00截断法,通过抓取数据包,更改save_path=../upload/ 为 save_path=../upload/1.php%00,即可绕过并且上传。
Pass13:和pass12一样是使用的是白名单,但是这边采用的是post的传参方式,也一样通过%00截断的方式,但是在这儿要对%00先进行一个编码,抓取到数据包后,,它的传参地方是在下面,和pass12不一样,更改save_path=../upload/ 为 save_path=../upload/1.php%00,选中%00,右击convert selection>url>url_decode,即可绕过并且上传webshell。
Pass14:根据提示说须要文件包含漏洞的方式并且上传.jpg.png.gif三种后缀的webshell才可过关,通过御剑进行对upload-labs进行扫目录,发现一个include.php文件,打开发现该文件用于测试图片马的,通过源码分析得到include.php是以file参数进行传参,更改webshell文件名为图片的后缀名,复制连接得到自动更改的文件名,得到payload 为http://192.168.43.204/upload-labs/include.php?file= 4520201217222329.gif,通过webshell连接工具即可过关。
Pass15:根据源代码发现该过滤规则是检查文件的前两个字节,更改webshell文件的后缀名为gif,在webshell文件中添加GIF89即可绕过并且上传。再利用文件包含即可绕过并且上传。
Pass16:上传文件后发现无法上传,这里直接拉一张图片来做图片马,经过测试图片马可用,上传后发现无法连接到shell,通过源码发现每上传一次图片则都会生成另外一个图片,通过上传webshell,进行对比,发现webshell语句已经没了,尝试正常文件上传一次,将上传成功的图片进行下载下来,制作成图片马再次上传,发现依旧无法,直接用网络中某位大神的脚本。
Pass17:通过源码发现过滤规则是先以move进行判断,符合白名单的就重命名,不符合的就unlinke进行删除,可以利用竞争条件,不断发送php webshell一句话木马,直到成功访问,以webshell连接工具连接成功即可过关。
Pass18:和pass17同样是先move再rename,继续竞争条件但是有白名单,要利用解析漏洞或文件包含,如果文件名简单可以尝试爆破,这里难以爆破文件名。所以利用apache解析漏洞,传1.php.rar 因为rar并不会被解析,可以改为7z。
Pass19:根据源码发现是一个黑名单过滤的方式,抓包,再webshell下面进行更改,可以以大小写、./、. .、::$DATA进行绕过
Pass20:通过源码发现该过滤方式是以explode()函数把字符串打散为数组,end() 函数将数组内部指针指向最后一个元素,并返回该元素的值(如果成功),这里是取post参数数组中的最后一个文件名。reset() 函数将内部指针指向数组中的第一个元素并输出。可控点为save_name。save_name[3]=conn19.php,save_name[5]=jpg,$ext=jpg过白名单,
reset($file)=conn19.php $file[1]=nul,就成功上传conn19.php.(多出个点但是windows自动去掉了没影响)。还可以尝试,1=conn19,2=php,3=jpg,或者Pass19的00截断,0=conn19.php(0x00),1=jpg
upload-labs通关历程的更多相关文章
- SUCTF 2019 Upload labs 2 踩坑记录
SUCTF 2019 Upload labs 2 踩坑记录 题目地址 : https://github.com/team-su/SUCTF-2019/tree/master/Web/Upload La ...
- Upload - Labs (下)
Pass - 11: 1.查看源代码,发现进行了一次对后缀名替换成空格,因此考虑双写绕过, 2.上传成功, 关键代码: $is_upload = false; $msg = null; if (iss ...
- Upload - Labs (上)
Pass - 01: 1.尝试上传一个php文件:aaa.php,发现只允许上传某些图片类型,用bp抓包,发现http请求都没通过burp就弹出了不允许上传的提示框,这表明验证点在前端,而不在服务端 ...
- XSS-change通关历程
Level1:没有过滤. <script>alert(1)</script> <svg/onload=alert(1)> <script>confirm ...
- Upload-labs通关指南(上) 1-10
Upload-labs 所有文章和随笔(随笔将不于csdn更新)将于我的个人博客(移动端暂未适配)第一时间更新. 一些网站存在文件上传接口,一旦存在这个接口就有可能存在漏洞. 文件上传漏洞的逻辑是将一 ...
- [web安全原理分析]-文件上传漏洞基础
简介 前端JS过滤绕过 待更新... 文件名过滤绕过 待更新 Content-type过滤绕过 Content-Type用于定义网络文件的类型和网页编码,用来告诉文件接收方以什么形式.什么编码读取这个 ...
- [原题复现+审计][SUCTF 2019] WEB CheckIn(上传绕过、.user.ini)
简介 原题复现:https://github.com/team-su/SUCTF-2019/tree/master/Web/checkIn 考察知识点:上传绕过..user.ini 线上平台:h ...
- buu学习记录(上)
前言:菜鸡误入buu,差点被打吐.不过学到了好多东西. 题目名称: (1)随便注 (2)高明的黑客 (3)CheckIn (4)Hack World (5)SSRF Me (6)piapiapia ( ...
- DVWA File Upload 通关教程
File Upload,即文件上传.文件上传漏洞通常是由于对上传文件的类型.内容没有进行严格的过滤.检查,使得攻击者可以通过上传木马获取服务器的webshell权限,因此文件上传漏洞带来的危害常常是毁 ...
随机推荐
- 黑马来袭!NGK生态所二月上线!
日前,加密货币交易所Coinbase Global Inc,向美国证券交易委员会申请首次公开募股,成为首家公开上市的加密货币交易所."Coinbase上市,给行业带来更多的是信心.让大家看到 ...
- DeFi里的灰度?每月获得高收益?BGV代币初探
2020年已经接近了尾声,但是DeFi市场的热闹场面并没有停止,或者说,一直在延续.资本市场不断将大批的资金投入到DeFi市场中,以求在这波热潮中赚得一波又一波红利. 美国时间12月21日,Bacca ...
- 【转】ROS之topic和service通信比较
实验速度 1. via topic 上图是以前ROS课上做的一个实验,内容是测试一个publisher和一个subscriber之间通讯所用的时间.两个node都很简单,publisher发送一个字符 ...
- C++算法代码——鹅卵石游戏
题目来自:http://218.5.5.242:9018/JudgeOnline/problem.php?id=2334 题目描述 为了消磨时光,奶牛Bessie和她的朋友Elsie喜欢玩一种她们在农 ...
- 玩遍博客网站,我整理了 Hugo 及其流行的风格主题
搭建博客网站是个人进入互联网世界的最常见方式之一.伴随着网站技术的发展,如何搭建博客网站已经变得非常容易了.当然,你可以选择诸如 新浪博客.CSDN.博客园 之类的大型网站,快速创建依赖于大平台的个人 ...
- idea中Maven-build lifecycle中下面标签详解
原文链接:https://blog.csdn.net/mr_orange_klj/article/details/82153945 Maven是基于一个build lifecycle的中心概念,意味着 ...
- python的基本运算符
目录 基本运算符 1.算术运算符 2.比较运算符 3.赋值运算符 4.逻辑运算符 5.身份运算符 6.位运算符 7.成员运算符 基本运算符 1.算术运算符 运算符 描述 实例 + 加-两个对象相加 a ...
- 《C++ Primer》笔记 第5章 语句
空块的作用等价于空语句. case标签必须是整型常量表达式,default也是一种特殊的case标签. 标签不应该孤零零地出现,它后面必须跟上一条语句或者另外一个case标签. 如果在某处一个带有初值 ...
- 让人头疼的AI bug (随想)
虽然概念上,人工智能和机器学习不等同.但是本文提及的AI,指的是基于机器学习的AI. 一个软件产品,出了错误叫bug,bug需要修.那一个机器学习的模型,准确率在那摆着呢,大伙心知肚明是有一定的犯 ...
- C#连接Excel读取与写入数据库SQL ( 下 )
接上期 dataset简而言之可以理解为 虚拟的 数据库或是Excel文件.而dataset里的datatable 可以理解为数据库中的table活着Excel里的sheet(Excel里面不是可以新 ...