使用靶场前,先配置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. bowser checker & UA

    bowser checker & UA navigator.userAgent; https://developer.mozilla.org/en-US/docs/Web/HTTP/Brows ...

  2. windows 设置右键菜单

    编辑注册表 在文件 右键菜单中添加 xx.reg: Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\*\shell\vscode] &q ...

  3. c++ 去掉字符串首尾空格

    http://www.cplusplus.com/reference/regex/regex_replace/ #include <iostream> #include <regex ...

  4. 新手如何通过SPC算力生态获得多重收益?

    DeFi市场在去年的一波又一波热潮之后,在今年余温有些褪去.而资本市场也将目光从DeFi市场中转移开来,他们将目光对准了新的市场,即算力市场.算力,其实从区块链技术在大范围普及以来,就是一个常见的话题 ...

  5. (1)MySQL进阶篇在linux环境下安装

    1.概述 对于mysql二进制安装,优点是可以安装到任何路径下,灵活性好,一台服务器可以安装多个mysql.缺点是已经编译过,性能不如源码编译得好,不能灵活定制编译参数.如果用户即不想安装最简单却不够 ...

  6. kvm-PLE代码分析

    Linux源码版本: 5.3.0 相关数据结构 #define KVM_DEFAULT_PLE_GAP 128 // ple_gap #define KVM_VMX_DEFAULT_PLE_WINDO ...

  7. mui调用本地相册调用相机上传照片

    调用mui的常用库和jquery html部分: <header class="mui-bar mui-bar-nav"> <a class="mui- ...

  8. Vue学习笔记-基于CDN引入方式简单前后端分离项目学习(Vue+Element+Axios)

    一  使用环境 开发系统: windows 后端IDE: PyCharm 前端IDE: VSCode 数据库: msyql,navicat 编程语言: python3.7  (Windows x86- ...

  9. MySQL连接中出现的问题

    异常: Establishing SSL connection without server's identityverification is not recommended. According ...

  10. Hive实现自增序列及常见的Hive元数据问题处理

    Hive实现自增序列 在利用数据仓库进行数据处理时,通常有这样一个业务场景,为一个Hive表新增一列自增字段(比如事实表和维度表之间的"代理主键").虽然Hive不像RDBMS如m ...