首页 > 其他分享 >iwebsec-文件上传 05 .htaccess

iwebsec-文件上传 05 .htaccess

时间:2023-08-19 15:35:10浏览次数:30  
标签:文件 php 05 htaccess iwebsec 上传

01、题目分析

image

正常来讲应该先判断文件上传过滤是前端验证还是后端验证,但是这个地方因为是靶场,所以直接告诉你了是什么类型,因此就不用进行判断了,这里是.htaccess文件绕过,htaccess 文件是 Apache 服务器中的一个配置文件,它负责相关目录下的网页配置。通过 htaccess 文件,可以帮我们实现:网页301重定向、自定义 404 错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能,因此我们可以通过修改这个文件内容来实现改变文件拓展名功能

02、文件上传

我们先在主机上新建一个文件,写入以下内容:

<FilesMatch "\.jpg">
  SetHandler application/x-httpd-php
</FilesMatch>

然后保存,命名为.htaccess,然后上传,再然后把1.php的一句话木马改名为1.jpg,然后上传即可得到webshell

image

03、源码分析

<?php
        header("Content-type: text/html;charset=utf-8"); // 设置响应头的内容类型和字符集为 UTF-8
        error_reporting(0); // 关闭所有错误和警告的显示
        // 设置上传目录
        define("UPLOAD_PATH", dirname(__FILE__) . "/upload/"); // 定义上传文件的存储目录
        define("UPLOAD_URL_PATH", str_replace($_SERVER['DOCUMENT_ROOT'], "", UPLOAD_PATH)); // 定义上传文件的访问 URL
        if (!file_exists(UPLOAD_PATH)) {
            mkdir(UPLOAD_PATH, 0755); // 如果上传目录不存在,则创建它,并设置权限为 0755
        }
        $is_upload = false; // 初始化变量,用于表示文件是否上传成功
        if (!empty($_POST['submit'])) { // 检查是否提交了名为 'submit' 的表单字段
            $name = basename($_FILES['file']['name']); // 获取上传文件的原始文件名,并使用 basename 函数去除路径信息
            $ext = pathinfo($name)['extension']; // 使用 pathinfo 函数获取上传文件的扩展名
            $blacklist = array("php", "php7", "php5", "php4", "php3", "phtml", "pht", "jsp", "jspa", "jspx", "jsw", "jsv", "jspf", "jtml", "asp", "aspx", "asa", "asax", "ascx", "ashx", "asmx", "cer", "swf"); // 定义不允许上传的文件扩展名列表
            if (!in_array($ext, $blacklist)) { // 检查上传文件的扩展名是否在黑名单中
                if (move_uploaded_file($_FILES['file']['tmp_name'], UPLOAD_PATH . $name)) { // 将上传的临时文件移动到指定的上传目录
                    $is_upload = true; // 文件上传成功
                } else {
                    echo "<script>error();</script>"; // 文件移动失败,输出错误提示
                }
            } else {
                echo "<script>black();</script>"; // 文件扩展名在黑名单中,输出黑名单提示
            }
        }
    ?>

标签:文件,php,05,htaccess,iwebsec,上传
From: https://www.cnblogs.com/bdrwmy/p/17642524.html

相关文章

  • iwebsec-文件上传 03 Content-Type过滤绕过
    01、题目分析文件上传的文件类型过滤,题目中已经告诉我们了,我们已经知道了过滤类型,但是出于学习和判断的目的,那么我们还是得判断一下文件上传的过滤类型02、文件上传先用哥斯拉创建一个一句话木马命名为1.php然后尝试上传木马依旧是被拦截,但是这次burp抓到了数据包,说明是后......
  • iwebsec-文件上传 02 文件名过滤绕过
    01、题目分析文件上传过滤类型,题目中已经告诉我们了,我们已经知道了过滤类型,但是出于学习和判断的目的,那么我们还是得判断一下文件上传过滤类型02、文件上传先用哥斯拉创建一个一句话木马命名为1.php然后尝试上传木马依旧是被拦截,但是这次burp抓到了数据包,说明是后端过滤......
  • iwebsec-文件上传 01 前端JS过滤绕过
    01、题目分析事实上,文件上传过滤是很正常的,需要自行判断是前端过滤还是后端过滤,一般上传木马的时候可以进行抓包,如果直接点击上传直接弹出禁止上传的界面,而没有抓到数据包,那就说明是前端js过滤,但是这个题目已经说明了是前端js过滤,就不用再测试了02、文件上传先用哥斯拉创建一个......
  • iwebsec-sql注入 13 二次注入
    01、题目分析二次注入的原理是先把sql注入语句存放在数据库中,然后第二次通过调用数据库的数据(提前放置好的注入语句),然后进行sql注入那么我们先将注册用户,将sql语句存放在数据库中,然后通过找回密码操作,数据库会自动调取数据库中的数据,就执行了我们的sql语句02、手工注入二次注......
  • P4005题解
    闲来无事写篇题解题面传送门简要题意一条线段上有\(n\)个点成对连接,求所连的线最小交点数。思路看到题目中\(n\le44\)自然想到最终复杂度大约在\(O(2^\frac{n}{2})\)左右。经过思考不难发现不论如何两地铁站之间有且只有以下八种方式进行连接:显然可以暴搜解决,......
  • iwebsec-sql注入 12 等价函数替换过滤
    01、题目分析依旧是对等号进行了过滤,那么可以尝试一些等价值的内容来替换等号02、手工注入依旧是对等号进行了过滤,那么可以尝试一些等价值的内容来替换等号,比如like,rlike,regexp替换,id=1可以用idlike1以及id>0andid<2以及!(id<>1)进行绕过--查询行数?id=1order......
  • iwebsec-sql注入 10 双重url编码绕过
    01、题目分析依旧是对关键词进行了过滤,除了双写大小写等过滤方法还可以采用双重url编码,在SQL注入攻击中,双层URL编码绕过机制是一种黑客利用URL编码的漏洞绕过安全检查的手法。原始的URL编码是将特殊字符转换成%后面跟着它的ASCII值的十六进制表示。例如,'被编码为%......
  • iwebsec-sql注入 11 十六进制编码绕过
    01、题目分析这里对单引号双引号啥的进行了过滤,可以采用16进制编码进行绕过02、手工注入这个和上次的双重url编码有异曲同工之妙,不过这个编码就简单了,直接十六进制编码即可,这里采用的编码软件是CaptfEncoder-win-x64-3.1.2.exe,16进制编码主要是在引号方面--查询行数?id=1or......
  • iwebsec-sql注入 08 大小写过滤注入
    01、题目分析大小写过滤顾名思义,会对正常小写的sql语句进行过滤,这个时候只需要大写sql注入语句即可02、手工注入?id=-1UNIONSELECT1,2,3?id=-1UNIONSELECT1,2,DATABASE()?id=-1UNIONSELECT1,2,GROUP_CONCAT(TABLE_NAME)FROMINFORMATION_SCHEMA.TABLESWHERETABLE......
  • iwebsec-sql注入 09 双写关键字绕过
    01、题目分析大小写过滤顾名思义,会对正常小写的sql语句进行过滤,这个时候只需要大写sql注入语句即可02、手工注入关键词绕过顾名思义,就是将一些sql注入中会用到的一些关键词进行过滤,本关是将select过滤了,那就双写写成seselectlect?id=1orderby3--id=-1就是不显示内容?id=......