文件上传之黑名单检测

一般情况下,代码文件里会有一个数组或者列表,该数组或者列表里会包含一些非法的字符或者字符串,当数据包中含有符合该列表的字符串时,即认定该数据包是非法的。

一.如何判断是否为黑名单检测

黑名单是有限的,可以随意构造一个文件后缀,如果可以上传,则说明是黑名单检测,反之,为白名单检测。

  1. 上传一个php后缀的文件,比如1.php,发现不允许上传
  2. 随意构造一个文件后缀,比如将1.php改为1.aaa发现可以上传,说明是基于黑名单检测

二.绕过技巧

  • 后缀双写绕过
  • 后缀大小写绕过
  • 其它可解析后缀绕过
  • 图片+配置文件绕过
  • 。。。
1.后缀双写绕过

靶场:http://127.0.0.1/upload-labs-master/Pass-11/index.php

  • 介绍:有些网站代码中,会将文件后缀符合黑名单列表的字符串替换为空。比如上传"index.php"变为"index"。​

  • 绕过流程:

    1. 打开bp抓上传文件的数据包,比如上传"post.php"

    2. 将"post.php"修改为"post.pphphp"​

    3. 修改完放包,即可成功上传。

2.后缀大小写绕过

靶场:http://127.0.0.1/upload-labs-master/Pass-06/index.php

  • 介绍:主要是利用windows对大小写不敏感进行绕过。

    • Windows:对大小写不敏感
    • Linux:对大小写敏感
  • 绕过流程:

    1. 打开bp抓上传文件的数据包,比如上传"post.php"

    2. 将"post.php"修改为"post.pHP"


    3. 修改完放包,即可成功上传。

3.图片+配置文件绕过

.htaccess 文件(或者"分布式配置文件"),全称是HypertextAccess(超文本入口)。提供了针对目录改变配置的方法。它里面可

以存放Apache服务器配置相关的指令。

靶场:http://127.0.0.1/upload-labs-master/Pass-04/index.php

  • 介绍:通过一个.htaccess​文件调用 php 的解析器去解析一个文件名中只要包含"as.png"这个字符串的任意文件,所以无论文件名是什么样子,只要包含"as.png"这个字符串,都可以被以 php 的方式来解析,一个自定的.htaccess​文件就可以以各种各样的方式去绕过很多上传验证机制。

  • 绕过流程:

    1. 先上传.htaccess​文件,内容如下:

      复制代码
      SetHandler application/x-httpd-php
      #将符合特定规则的文件当作 PHP 脚本文件,调用 PHP 解释器来处理
      AddType application/x-httpd-php jpg
      ##将.jpg文件当作 PHP 脚本文件,调用 PHP 解释器来处理
    2. 再上传一句话木马"post.txt​"或"post.jpg​"

4.其它可解析后缀绕过

靶场:http://127.0.0.1/upload-labs-master/Pass-03/index.php

  • ​::$DATA​:

    在window的时候如果文件名+"::DATA"会把::DATA之后的数据当成文件流处理,不会检测后缀名,且保持::$DATA之前的文件名,它的目的就是不检查后缀名。

    例如:"phpinfo.php::DATA" Windows会自动去掉末尾的::DATA变成"phpinfo.php"

    双写::$DATA​:

    • 介绍:有的网站代码会去除字符串中的::DATA​,所以需要双写::DATA​进行绕过。​

    • 绕过流程:

      1. 打开bp抓上传文件的数据包,比如上传"post.php"

      2. 将"post.php​"修改为"post.php::DA::DATATA​"


      3. 修改完放包,即可成功上传。

相关推荐
superlls13 分钟前
(微服务)Dubbo 服务调用
笔记·rpc·dubbo
于小汐在咯2 小时前
词根学习笔记 | Agri系列
笔记·学习
霜绛2 小时前
Unity:Json笔记——Json文件格式、JsonUtlity序列化和反序列化
学习·unity·json·游戏引擎
摇滚侠3 小时前
Spring Boot 3零基础教程,Spring Intializer,笔记05
spring boot·笔记·spring
2301_768350233 小时前
Vue第二期:组件及组件化和组件的生命周期
前端·javascript·vue.js
聪明的笨猪猪3 小时前
Java Redis “高可用 — 主从复制”面试清单(含超通俗生活案例与深度理解)
java·经验分享·笔记·面试
我命由我123454 小时前
Excel - Excel 列出一列中所有不重复数据
经验分享·学习·职场和发展·word·powerpoint·excel·职场发展
摇滚侠4 小时前
Spring Boot 3零基础教程,Demo小结,笔记04
java·spring boot·笔记
璞致电子4 小时前
fpga开发板ZYNQ 璞致 PZ7010/7020 邮票孔核心板简介-ZYNQ7000系列小系统学习板
linux·嵌入式硬件·学习·fpga开发·fpga·fpga开发板·xilinx开发板
华洛4 小时前
公开一个AI产品的商业逻辑与设计方案——AI带来的涂色卡自由
前端·后端·产品