使用靶场前,先配置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通关历程的更多相关文章

  1. SUCTF 2019 Upload labs 2 踩坑记录

    SUCTF 2019 Upload labs 2 踩坑记录 题目地址 : https://github.com/team-su/SUCTF-2019/tree/master/Web/Upload La ...

  2. Upload - Labs (下)

    Pass - 11: 1.查看源代码,发现进行了一次对后缀名替换成空格,因此考虑双写绕过, 2.上传成功, 关键代码: $is_upload = false; $msg = null; if (iss ...

  3. Upload - Labs (上)

    Pass - 01: 1.尝试上传一个php文件:aaa.php,发现只允许上传某些图片类型,用bp抓包,发现http请求都没通过burp就弹出了不允许上传的提示框,这表明验证点在前端,而不在服务端 ...

  4. XSS-change通关历程

    Level1:没有过滤. <script>alert(1)</script> <svg/onload=alert(1)> <script>confirm ...

  5. Upload-labs通关指南(上) 1-10

    Upload-labs 所有文章和随笔(随笔将不于csdn更新)将于我的个人博客(移动端暂未适配)第一时间更新. 一些网站存在文件上传接口,一旦存在这个接口就有可能存在漏洞. 文件上传漏洞的逻辑是将一 ...

  6. [web安全原理分析]-文件上传漏洞基础

    简介 前端JS过滤绕过 待更新... 文件名过滤绕过 待更新 Content-type过滤绕过 Content-Type用于定义网络文件的类型和网页编码,用来告诉文件接收方以什么形式.什么编码读取这个 ...

  7. [原题复现+审计][SUCTF 2019] WEB CheckIn(上传绕过、.user.ini)

    简介  原题复现:https://github.com/team-su/SUCTF-2019/tree/master/Web/checkIn  考察知识点:上传绕过..user.ini  线上平台:h ...

  8. buu学习记录(上)

    前言:菜鸡误入buu,差点被打吐.不过学到了好多东西. 题目名称: (1)随便注 (2)高明的黑客 (3)CheckIn (4)Hack World (5)SSRF Me (6)piapiapia ( ...

  9. DVWA File Upload 通关教程

    File Upload,即文件上传.文件上传漏洞通常是由于对上传文件的类型.内容没有进行严格的过滤.检查,使得攻击者可以通过上传木马获取服务器的webshell权限,因此文件上传漏洞带来的危害常常是毁 ...

随机推荐

  1. TypeScript & Examples

    TypeScript & Examples http://www.typescriptlang.org/samples/index.html https://github.com/Micros ...

  2. 交易所频频跑路?Baccarat去中心化交易平台助力资金安全

    过去,黑客攻击可能是交易所跑路的最常见原因.自OKEx事件以来,这些交易所暂停提币或跑路还多了一个原因,就是因创始人正在协助调查. 据不完全统计,自OKEx于10月16日宣布暂停提币后不到两个月,已经 ...

  3. mysql数据库表引入redis解决方案

    缓存方案 缓存方案在我的另外一篇博客里有详细说明,地址:https://www.cnblogs.com/wingfirefly/p/14419728.html 数据结构: 方案1: 1.存储结构采用h ...

  4. 一周精彩内容分享(第 3 期):开工大吉的 B 面

    这里记录过去一周,我看到的值得分享的东西. 一方面是整理记录一下自己一周的学习,另一方面也是期待自己有更多的输出,有更多的价值. 周刊开源(Github:wmyskxz/weekly),欢迎提交 is ...

  5. 20_MySQL表的内连接实操

    -- 查询底薪超过公司平均底薪的员工信息 -- 方法1 SELECT empno,ename FROM t_emp HAVING sal>AVG(sal); 因为在having中不能拿一个字段与 ...

  6. epoll 原理

    本文转载自epoll 原理 导语 以前经常被人问道 select.poll.epoll 的区别,基本都是靠死记硬背的,最近正好复习 linux 相关的内容,就把这一块做个笔记吧,以后也能方便查阅. e ...

  7. 痞子衡嵌入式:串行NOR Flash的DQS信号功能简介

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是串行NOR Flash的DQS信号功能. 串行NOR Flash在嵌入式里的应用相当广泛,既可用作数据存储也可以用作代码(XiP)存储, ...

  8. nacos集群

    本章分析一下nacos集群之间nacos服务器上线,下线原理 每5秒运行定时任务ServerListManager.ServerListUpdater获取新上线的节点或下线的节点 每2秒运行定时任务S ...

  9. 007-变量的作用域和LED点阵

    变量 一.局部变量和全局变量 局部变量:函数内申明的变量,只在函数内有效. 全局变量:函数外部申明的变量.一个源程序文件有一个或者多个函数,全局变量对他们都起作用. 备注:全局变量有副作用,降低了函数 ...

  10. Salesforce LWC学习(三十一) Quick Action适配

    本篇参考:https://www.lightningdesignsystem.com/components/modals/ 随着salesforce lwc的优化,越来越多的项目从aura转到了lwc ...