• 文件上传基础详解


    前言
    tips:
    *如果我们在使用蚁剑发现了返回值为空说明一句话木马语法错误,如果我们发现返回值是一串乱码 则是链接地址填写错误*

    一、前端js验证

    先上传php文件尝试一下,提示只能上传\jpgpng\gif的文件,并且是在前端过滤。

    做一个图片马

    burp抓包改包,修改为php

    上传成功

    二、mime类型绕过

    1、JS前端绕过修改后缀也是可行的
    ​
    2、修改mime类型

    Content-Type: application/octet-stream修改为image/jpeg

     

    上传成功

     

    三、黑名单绕过

    首先要在httpd.conf中配置 因为默认是未启用的

    随便上传一个文件查看提示不允许上传asp.aspx.php.jsp

    有很多类型可以绕过这几种
    ​
    php3 php4 php5 phtml  PHphpp

     

     

     

     

     

    四、.htaccess文件配置文件漏洞,无过滤

    适用条件
    ​
    php版本 5.6一下 未开启nts
    ​
       htaccess”文件或者称为分布式配置文件,它是 Apache  服务器中的配置文件,提供了针对每个目录设置不同的配置的方法。有些服务器在上传认证时没有拦截 .htaccess  文件上传,就会造成恶意用户利用上传 .htaccess 文件解析漏洞,来绕过验证进行上传 WEBShell,从而达到控制网站服务器的目的。

    将其进行上传,因为 .htaccess 是 apache 服务器中的一个配置文件,不在上传的文件的黑名单之内,所以 .htaccess 文件是可以上传成功。

    再上传图片马,由于 .htaccess 文件上传之后就生效了,此时所有的 png 文件都会以 php 文件的形式被解析,即可进行连接。

    五、PHP的.user.ini文件(. 空格 .)

    自 PHP 5.3.0 起,PHP 支持基于每个目录的 .htaccess 风格的INI文件,此类文件仅被 CGI/FastCGI SAPI  处理。除了主 php.ini 之外,PHP 还会在每个目录下扫描INI文件,从被执行的 PHP 文件所在目录开始一直上升到 web 根目录。
     使用 user.ini 文件进行文件上传时,需要服务器脚本语言为 PHP,对应目录下面有可执行的php文件,且服务器使用 CGI/FastCGI 模式。.user.ini.它比 .htaccess 用的更广,不管是nginx/apache/IIS,只要是以 fastcgi 运行的 php 都可以用这个方法。(user.ini文件利用还没搞明白 我再研究一下)
    直接上传shell文件,修改为shell.php. .

    上传成功

    六、大小写

    此方法只适用于windous,而linux是区分大小写的,不能正常执行

    .php",".php5",".php4",".php3",".php2",".html",".htm",".phtml",".pht",".pHp",".pHp5",".pHp4",".pHp3",".pHp2",".Html",".Htm",".pHtml",".jsp",".jspa",".jspx",".jsw",".jsv",".jspf",".jtml",".jSp",".jSpx",".jSpa",".jSw",".jSv",".jSpf",".jHtml",".asp",".aspx",".asa",".asax",".ascx",".ashx",".asmx",".cer",".aSp",".aSpx",".aSa",".aSax",".aScx",".aShx",".aSmx",".cEr",".sWf",".swf",".htaccess",".ini"

    pHP \PHP \Php \pHP3 \PHP3 \Php3 种类比较多 自行发挥

     

    七、trim()去空操作

    上传shell.php后加空格绕过

     

    八、winous特性,以.结尾无效

    上传shell.php后加.

     

    九、::$data

    ::$data的作用是将webshell.php当做字符流处理,所以对其后缀名检测不成功。

     

    十、一次过滤没有循环

    . .绕过

     

    十一、这一关进行了过滤php字符串

    phphpp\Phphpp等等 自行发挥

     

    十二、%00截断:url 的终止符

    本题考查%00截断,相当于复现CVE-2006-7243,所以需将php版本设置为PHP 5.3.4以下, 并关闭`magic_quotes_gpc`选项。

    php.ini

     

    1. 可见保存的路径也可以由用户所控制,GET类型的传参。因此在保存路径中修改为:
    2. save_path=../upload/test.php%00

    十三、post %00截断

     

    解码以后变成不可见字符

     

  • 相关阅读:
    自动批量生成Notes应用测试数据!
    小波变换学习笔记【1】
    智能钱包 AMA 第 8 期:探索进入市场的策略
    ElasticSearch离线安装
    洛谷算法题解:Bear and Bowling
    devc++跑酷小游戏3.5.0
    【UE4】打包失败 Failed to build UATTempProj.proj
    JDBC基础知识
    springboot12总结篇(9 10 11)
    10-2 Prometheus本地存储机制,单机远端存储
  • 原文地址:https://blog.csdn.net/weixin_53095382/article/details/125895145