zoukankan      html  css  js  c++  java
  • 攻防世界WEB高手进阶之blgdel

    CISCN final

    打开页面

     

    扫描目录

     

     Robots.txt

     

     Config.txt

    代码审计

    <?php
    
    class master
    {
        private $path;
        private $name;
        
        function __construct()
        {
            
        }
        
        function stream_open($path)
        {
            if(!preg_match('/(.*)/(.*)$/s',$path,$array,0,9))
                return 1;
            $a=$array[1];
            parse_str($array[2],$array);
            
            if(isset($array['path']))
            {
                $this->path=$array['path'];
            }
            else
                return 1;
            if(isset($array['name']))
            {
                $this->name=$array['name'];
            }
            else
                return 1;
            
            if($a==='upload')
            {
                return $this->upload($this->path,$this->name);
            }
            elseif($a==='search')
            {
                return $this->search($this->path,$this->name);
            }
            else 
                return 1;
        }
        function upload($path,$name)
        {
            if(!preg_match('/^uploads/[a-z]{10}/$/is',$path)||empty($_FILES[$name]['tmp_name']))
                return 1;
            
            $filename=$_FILES[$name]['name'];
            echo $filename;
            
            $file=file_get_contents($_FILES[$name]['tmp_name']);
            
            $file=str_replace('<','!',$file);
            $file=str_replace(urldecode('%03'),'!',$file);
            $file=str_replace('"','!',$file);
            $file=str_replace("'",'!',$file);
            $file=str_replace('.','!',$file);
            if(preg_match('/file:|http|pre|etc/is',$file))
            {
                echo 'illegalbbbbbb!';
                return 1;
            }
            
            file_put_contents($path.$filename,$file);
            file_put_contents($path.'user.jpg',$file);
            
            
            echo 'upload success!';
            return 1;
        }
        function search($path,$name)
        {
            if(!is_dir($path))
            {
                echo 'illegal!';
                return 1;
            }
            $files=scandir($path);
            echo '</br>';
            foreach($files as $k=>$v)
            {
                if(str_ireplace($name,'',$v)!==$v)
                {
                    echo $v.'</br>';
                }
            }
            
            return 1;
        }
        
        function stream_eof()
        {
            return true;
        }
        function stream_read()
        {
            return '';
        }
        function stream_stat()
        {
            return '';
        }
        
    }
    
    stream_wrapper_unregister('php');
    stream_wrapper_unregister('phar');
    stream_wrapper_unregister('zip');
    stream_wrapper_register('master','master');
    
    ?>

    还发现有sql.txt

     

     给出了数据库名,数据表,列名,字段名

    访问User.php

     

    发现有文件上传点

    访问发现等级过低

     

     估计要拿一个高分的账户

    后面注意到注册页面有个推荐人,试了一下,注册一个新账户给10个积分

     

    到达一百个积分的时候可以上传文件

     

     上传一个图片马

    上传失败,回头看看代码config.php

     

    这里过滤了尖括号,代码尽管上传成功,但是无法执行

     

     代码被替换了

     

    无法上传php马,但是在尝试过程中发现.htaccess可以被上传,意味着我们可以包含文件

    .htaccess相关介绍,在这里

    链接:

    https://www.cnblogs.com/adforce/archive/2012/11/23/2784664.html

    https://blog.csdn.net/cmzhuang/article/details/53537591

    后面实在看不出东西,无奈WP大法

    说的比较详细,大概意思是可以通过构造这个master协议来搜索文件,包含成功的话,这个文件的内容会映射到test.php里面

    构造

    php_value auto_append_file master://search/path={}&name={}

    wp说的要把正斜杠编码传入才行,试了一下,确实不行,原因未知

     

    编码一下

    php_value auto_append_file master://search/path=%2fhome%2f&name=flag

    然后放进.htaccess里面,上传

    访问1.php

     

    直接包含进来

    php_value auto_append_file /home/hiahiahia_flag

     

     Flag拿到了

  • 相关阅读:
    Linux下sed,awk,grep,cut,find学习笔记
    Python文件处理(1)
    KMP详解
    Java引用详解
    解决安卓中页脚被输入法顶起的问题
    解决swfupload上传控件文件名中文乱码问题 三种方法 flash及最新版本11.8.800.168
    null id in entry (don't flush the Session after an exception occurs)
    HQL中的Like查询需要注意的地方
    spring mvc controller间跳转 重定向 传参
    node to traverse cannot be null!
  • 原文地址:https://www.cnblogs.com/mke2fs/p/11569913.html
Copyright © 2011-2022 走看看