• 文件上传基础详解


    前言
    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截断

     

    解码以后变成不可见字符

     

  • 相关阅读:
    【Spark NLP】第 5 章:处理词
    B+树在数据库中的使用
    使用crontab定时脚本备份Mysql数据
    Salesforce正在推出AI功能,传统的项目文档管理还需要么?
    linux安装Tomcat
    企业应用架构研究系列二十八:身份认证 Beginning Out With IdentityServer4
    Nanoprobes丨Nanogold 标记条带的凝胶染色
    Flutter 实现软鼠标
    SaaSpace:9种最佳免费时间管理软件
    ASEMI肖特基二极管SB30100LCT图片,SB30100LCT应用
  • 原文地址:https://blog.csdn.net/weixin_53095382/article/details/125895145