欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 建筑 > 文件上传之白名单检测

文件上传之白名单检测

2025/2/24 0:18:32 来源:https://blog.csdn.net/qq_37107430/article/details/144519464  浏览:    关键词:文件上传之白名单检测

一般情况下,代码文件里会有一个列表存放着允许上传的文件后缀,如果上传的文件后缀名不符合白名单,就不允许上传。

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

上传一张图片与上传一个自己构造的后缀,如果只能上传图片不能上传其它后缀文件,说明是白名单检测。

二.绕过技巧

  • 利用00截断进行绕过

    • %00截断
    • 0x00截断
  • 如果网站存在文件包含漏洞,还可以文件包含+图片马进行绕过

1.00截断

前提条件

  1. php:php < 5.3.29且magic_quotes_gpc=off


  2. java:jdk < JDK1.7.0_40

%00截断

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

  • 介绍:%00是一个url编码,url发送到服务器后就被服务器解码,这时还没有传到验证函数,也就是说验证函数里接收到的不是%00字符,而是%00解码后的内容,即解码成了0x00。在url中%00表示ascll码中的0 ,而ascii中0作为特殊字符保留,表示字符串结束,所以当url中出现%00时就会认为读取已结束。

  • 截断演示:


    • 为什么需要修改path才可以?

      因为程序中检测的是文件的后缀名,如果后缀合法则拼接路径和文件名。那么,攻击者修改了path以后的拼接结果为:uploads/shell.php%00/20190818.jpg

      移动文件的时候会将文件保存为:uploads/shell.php从而达到Getshell效果

    • PS:除了修改path外,还需要将原文件名修改为合法的文件名,比如"post.php"修改为"post.jpg"

0x00截断

靶场:http://192.168.13.132/upload-labs-master/Pass-13/index.php

  • 介绍:系统在对文件名进行读取时,如果遇到0x00,就会认为读取已经结束。但要注意是文件的十六进制内容里的00,而不是文件名中的00。

  • 截断演示:

    1. 打开bp抓取上传文件的数据包

    2. 修改path内容以及上传的文件名


    3. 在Hex界面将加号修改为00


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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词