• 【upload靶场17-21】二次渲染、条件竞争、黑白名单绕过


    目录

    一、推荐

    Pass17(二次渲染绕过)

    特点:

    分析:

    利用:

    Pass18(条件竞争)

    特点:

    分析:

    利用:

    Pass19(条件竞争)

    特点:

    分析:

    利用:

    Pass20(黑名单检测)

    特点:

    分析:

    利用:

    Pass21(绕过白名单)

    特点:

    分析:

    利用:


    一、推荐

    【upload靶场1-11】基础关卡:特点、分析、利用icon-default.png?t=M666https://blog.csdn.net/qq_53079406/article/details/125846616?spm=1001.2014.3001.5501【upload靶场12-16】截断、图片马icon-default.png?t=M666https://blog.csdn.net/qq_53079406/article/details/125870738?spm=1001.2014.3001.5501



    Pass17(二次渲染绕过)

    特点:

    二次渲染:后端对文件的内容进行重写

    分析:

    后面关卡应该基本上是后端检查


    考虑:

    通过对比渲染前后的图片,寻找未被渲染的地方,并在其中插入语句

    利用:

    上传正常图片

    并下载经过上传渲染后的图片

    然后使用工具进行比较

     

     

     分析前后未被渲染的地方

     


    制作图片马

    可以直接使用Hex软件(如010 Editor、winhex等)在未被渲染的位置写入代码

    (不能损坏文件,不然可能会被检测为非图片格式)

    (是替换原位置代码,且原位置代码无伤大雅)


     上传 图片马


     打开图片获得图片地址

    利用文件包含漏洞upload-labs/include.php?file=upload/文件名

    (图片显示为乱码则解析成功了)

    复制图片马的地址

    蚁剑(菜刀、冰蝎)连接

    粘贴shell地址,和自己设置的密码



    Pass18(条件竞争)

    特点:

    二次渲染:后端对文件的内容进行重写

    分析:

    后面关卡应该基本上是后端检查


    考虑:

    通过对比渲染前后的图片,寻找未被渲染的地方,并在其中插入语句

     

     

    逻辑顺序

    1、服务器先是将上传的文件保存

    2、再将文件的后缀名同白名单对比,符合则进行重命名

    3、不符合,unlink()函数删除该文件 


    保存到删除之间,会有一段时间差

    在这段时间内,文件是在服务器上的,可能被执行

    利用:

    准备php文件

    触发其写一个shell.php命名的webshell

    '); ?>

     或者

    ');?>


     

    上传php文件

    使用bp拦截,并发送到intruder

     清除有效载荷位置

     

    设置无载荷,无期限重复

     并设置一下线程----->开始


    与此同时运行python脚本,用来不断访问php文件,使其解析成功


    打开文件获得上传文件的地址

    相应知道了生成文件的地址

    蚁剑(菜刀、冰蝎)连接

    粘贴shell地址,和自己设置的密码



    Pass19(条件竞争)

    特点:

    检测然后重命名

    分析:

    后面关卡应该基本上是后端检查


     

     

    逻辑顺序

    1、服务器先将文件与白名单作对比

    2、检查大小看文件是否已经存在

    3、再进行重命名


    保存到重命名之间,会有一段时间差

    在这段时间内,文件还是能被访问到的,并被解析执行

    利用:

    准备图片马

    触发其写一个shell.php命名的webshell

    '); ?>

    或者

    ');?>


    使用bp拦截,并发送到intruder

     清除有效载荷位置

    设置无载荷,无期限重复

     并设置一下线程----->开始


    与此同时运行python脚本,用来不断访问图片马,使其解析成功

    (此时的脚本是文件包含去访问)


    打开图片获得上传文件的地址

    相应知道了图片马的地址

    蚁剑(菜刀、冰蝎)连接

    粘贴shell地址,和自己设置的密码



    Pass20(黑名单检测)

    特点:

    会对用户输入的保存文件名。进行黑名单检测

    move_uploaded_file()函数检测

    分析:

    后面关卡应该基本上是后端检查


     对上传的文件,没有任何检测

    但是会对其保存的文件名进行检测

    考虑:

    1、对文件名后缀进行爆破(绕过黑名单)

    2、将save_name参数进行%00截断

    3、bp抓包修改为shell.php/.绕过move_uploaded_file()函数检测

    利用:

    将写入一句话木马的php文件改为png后缀,并上传

     


    使用bp拦截

     将保存的文件名修改为.php./后缀


     

    打开图片获得上传文件的地址

    相应知道了shell文件的地址

    蚁剑(菜刀、冰蝎)连接

    最后网盘地址为…… upload-20.php/

    粘贴shell地址,和自己设置的密码



    Pass21(绕过白名单)

    特点:

    分析:

    后面关卡应该基本上是后端检查


     

    逻辑流程:
    MIME检测:content-type值检测(bp抓包修改)
    判空:POST参数是否为空定义$file变量(构造数组绕过分割)
    分割:file不是数组则使用explode('.', strtolower($file))对file进行切割,变为一个数组
    判断后缀:数组后缀是否合法
    命名:数组第一位和$file[count($file) - 1]拼接,文件名file_name
    上传


    考虑:

    1、修改MIME

    2、构造数组

    3、构造php文件数组的下一个数组为空,没法拼接文件名

    利用:

    上传一句话木马

    (上传什么后缀都不要紧,因为他后面有重新保存文件名,所以对上传的文件名没有检测)


    使用bp拦截

     

    1、修改MIME:image/jpeg

    2、构造数组:[0][2]

    3、构造php文件数组的下一个数组为空,没法拼接文件名

     

     


    打开图片获得上传文件的地址

    蚁剑(菜刀、冰蝎)连接

    最后网盘地址为

    粘贴shell地址,和自己设置的密码

  • 相关阅读:
    优化程序性能
    模板中的依赖类型使用 --- typename
    VUE项目build后自动生成zip压缩包
    python 之 字符串的相关知识
    羧酸-COOH功能化修饰红色荧光聚苯乙烯AIE微球的产品组成和保存条件
    Electron:BrowserView使用方法
    2023年亚太杯数学建模思路 - 案例:最短时间生产计划安排
    springboot2.X整合mybatis使用joda时间格式变量完成插入操作
    Mapbox 与 Babylon.js 可视化 给车身添加贴图
    神经网络可视化:卷积核可视化
  • 原文地址:https://blog.csdn.net/qq_53079406/article/details/125877747