zoukankan      html  css  js  c++  java
  • upload-labs闯关

    upload-labs闯关

    1关

    1. 原理:客户端(前端js验证文件是否正确)验证,可以直接抓包,重放绕过。

    2关

    1. 原理

    mime:多用途互联网邮件扩展类型。是设定某种扩展名文件用一种应用程序来打开的方式类型(规定了扩展名)

    1. 可以用第一关的方式绕过

    2. 原理:其content-type(mime)是由客户端根据你上传的文件生成的,但限制只能是jpg/image格式,所以抓包改就好了

      也可以抓一个正确的包,修改器白名单限制类型

    改mime为image/jpeg

    3关

    黑名单过滤,禁止上传.asp|.aspx|.php|.jsp后缀文件。更改后缀解析

    例:AddType application/x-httpd-php .php .php3 .phtml

    apche服务配置以上语句 将.php .php3 .phtml都以php格式解析,所以思路就是修改可以解析的后缀。

    需要自己修改apche配置文件httpd.conf,构造漏洞环境)

    AddType application/x-httpd-php .php .php3 .phtml

    但是我是phpstudy新版,无法解析文件环境问题

    4关

    查看源码,发现过滤了几乎所有的后缀名,还是黑名单。

    htaccess文件:是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。

    原理:他没有过滤 .htaccess后缀,我们可以构建一个htaccess配置文件,让所有格式文件都解析为php,然后再上传图片马(只要后缀是允许的,随便都可以)就会被解析了。

    .htaccess语句:

    SetHandler application/x-httpd-php
    

    1. 上传.htaccess文件

    2. 上传图片马(千万不要用phpstudy的新版本,解析不了,只能用老版本,我在新版本哪里浪费了很多时间)

    5关

    还是先看源码,发现还是黑名单过滤,这次包括了.htaccess后缀,但是第四关源码全部转化为了小写,第五关没有过滤大小写。所以可以通过大小写绕过。

    1-直接将木马后缀改为1.Php就好了

    6关

    首先查看源代码,发现也是黑名单过滤。只是没有收尾去空。所以可以更改后缀,在末尾加入空格。windows后缀会删除末尾的.和空格。所以bp抓包,将文件改为1.php .(空格加点),传进去后会删除空格和.保留1.php文件名。(因为bp不能末尾加空格无用,所以换成空格加.)

    1-后缀改为1.php .

    7关

    黑名单,没有对后缀名进行去"."处理,在bp中改为1.php. ,传成功后就会自动删除“.”

    8关

    查看源代码,黑名单过滤,没有对后缀名进行去”::$DATA”处理,利用windows特性,可在后缀名中加” ::$DATA”绕过:

    NTFS文件系统包括对备用数据流的支持。这不是众所周知的功能,主要包括提供与Macintosh文件系统中的文件的兼容性。备用数据流允许文件包含多个数据流。每个文件至少有一个数据流。在Windows中,此默认数据流称为:$ DATA。
    

    1-bp中文件后缀改为:1.php::$DATA

    9关

    查看文件源代码,还是黑名单过滤,先删除文件名末尾的点,再进行首尾去空。都只进行一次。故可以构造点空格点进行绕过。

    1-后缀名为:1.php. .

    10关

    原理:利用str_ireplace对黑名单里的文件后缀名进行了替换,换成空字符,使用了str_ireplace函数,即不区分大小写,故大小写绕过不适用。但是这里替换是替换成了空字符。

    顺序双写,我们就可以构建.pphphp后缀。从左至右识别到php替换后,还剩下一个php。(不能.phpphp这样全部都能识别替换)

    11关

    查看源代码,发现使用了白名单,只允许jpg,png,gif三种格式文件。

    if(isset($_POST['submit'])){
        $ext_arr = array('jpg','png','gif');
        $file_ext = substr($_FILES['upload_file']['name'],strrpos($_FILES['upload_file']['name'],".")+1);
        if(in_array($file_ext,$ext_arr)){
            $temp_file = $_FILES['upload_file']['tmp_name'];
            $img_path = $_GET['save_path']."/".rand(10, 99).date("YmdHis").".".$file_ext;
    
            if(move_uploaded_file($temp_file,$img_path)){
                $is_upload = true;
            } else {
                $msg = '上传出错!';
            }
        } 
    

    理解原理:$_GET['save_path']函数是文件最终存储路径。代码里面拼接了一些随机字符,我们可以上传1.jpg,而在 save_path这个最终保存路径函数下面保存为1.php并加上%00来隔断后面的随机字符,这样实际存储到服务器上面路径上就是1.php的后缀了。

    这里利用的是00截断。即move_uploaded_file函数的底层实现类似于C语言,遇到0x00会截断

    截断条件:
    1、php版本小于5.3.4
    2、php.ini的magic_quotes_gpc为OFF状态

    1. 将1.php改为1.jpg后缀(白名单限制),抓包?save_path=../upload/1.php%00

    2. 加入截断%00

    3. 返回url时间戳,复制地址,粘贴测试,../upload/1.php /3120200428231832.jpg

    12关

    原理:和11关一样,但11关是$_GET['save_path'],12关是$_POST['save_path']。请求方式不同。还是用截断的方法绕过,我试了一下%00发现不成功。

    原理:通过get方式在url中添加%00,通过get方式传递到服务器会被自动解码,所以ASCII码数值0对应的(null)字符,达到截断的目的。

    遇到ascii码为零的位置就停止,而这个ascii码为零的位置在16进制中是00

    ​ 通过post,加入%00不会被服务器解码,只会原样被参数变量接受。所以这里要修改post数据的16进制来达到截断的目的。(0x00是十六进制表示方法,是ascii码为0的字符,在有些函数处理时,会把这个字符当做结束符。)就是说系统是按16进制读取文件(或者说二进制)。

    1-可以通过bp直接url手动解码

    ../upload/1.php%00,选择%00右击选择convert selection(转换)-> url->url decode(url解码)

    2-也可以在hex里面修改1.php后面的一个字符的16进制改为00,来对应asscall码的0字符达到截断的作用。

    具体参照:https://www.zhaosimeng.cn/writeup/68.html

    17关

    原理:时间差,竞争关系。

    上传木马文件会在缓存中停留几毫秒然后才被删除掉,可以利用这个时间差执行操作。

    1-首先抓取上传木马的数据包

    木马构造语句,在解析执行时,创建一个新的shell2.php木马文件,内容为一句话木马。只要访问成功就可以在这个时间差内,写入一个新文件,即使这个文件之后被删除也没有关系。

    ’);?>

    2-抓取访问包

    通过不停的访问,来在这个时间差内抓取到还未删除的木马文件,使其解析执行。

    3-在爆破模块,先执行访问包,在执行木马包。这样能更大概率的能成功执行木马文件。pload配置如下

    每个包都不断发送2000次,这样总会抓住时间差,解析木马成功。

  • 相关阅读:
    使用cout进行格式化
    20175324 《Java程序设计》第3周学习总结
    20175324第二周学习总结
    第三周学习总结
    JAVA第二周学习总结
    20175330第一周学习总结。
    20175330第一周学习总结
    指针
    数组总结(一)
    数组练习题A财务管理
  • 原文地址:https://www.cnblogs.com/kbhome/p/12822311.html
Copyright © 2011-2022 走看看