詳解PHP中pathinfo()函數(shù)導致的安全問題
定義和用法
pathinfo() 函數(shù)以數(shù)組或字符串的形式返回關于文件路徑的信息。
返回的數(shù)組元素如下:
- [dirname]:返回文件路徑中的目錄部分
- [basename]:返回文件路徑中文件名的部分
- [extension]:返回文件路徑中文件的類型的部分
語法
pathinfo(path,options)
參數(shù)
- path: 必需。規(guī)定要檢查的路徑。
- options 可選。規(guī)定要返回的數(shù)組元素。默認是 all。
可能的值:
- PATHINFO_DIRNAME - 只返回 dirname
- PATHINFO_BASENAME - 只返回 basename
- PATHINFO_EXTENSION - 只返回 extension
提示和注釋
注釋:如果不是請求所有的元素,則 pathinfo() 函數(shù)返回字符串。
php開啟pathinfo 路由模式:pathinfo 模式 需要 php.ini 開啟下面這個參數(shù)
cgi.fix_pathinfo=1
path_info模式:http://www.xxx.com/index.php/模塊/方法
實例 1
<?php
print_r(pathinfo("/testweb/test.txt"));
?>
上面的代碼將輸出:
Array ( [dirname] => /testweb [basename] => test.txt [extension] => txt )
實例 2
<?php
var_dump(pathinfo("/testweb/test.txt",PATHINFO_DIRNAME));
var_dump(pathinfo("/testweb/test.txt",PATHINFO_BASENAME));
var_dump(pathinfo("/testweb/test.txt",PATHINFO_EXTENSION));
?>
上面的代碼將輸出:
string(8)"/testweb" string(8)"test.txt" string(3)"txt"
應用
目錄不可控沒有執(zhí)行權限

pathinfo, 一種偽靜態(tài)的用法,path_info 模式:http://www.xxx.com/index.php / 模塊 / 方法:

sb.txt 被當成了模塊,實際上請求的還是 6.php

一句話就執(zhí)行了。
過 WAF 注入
本地安裝 apache 安全狗
已知在開啟 pathinfo 的情況下 (默認開啟) 可以這樣訪問

常用注入語句被攔截

pathinfo 模式不攔截

總結
以上就是這篇文章的全部內容了,本文也算是拋磚引玉,更多用途請自測!希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。
相關文章
JS如何設置滾動屬性默認自動滾動到底部(overflow:scroll;)
這篇文章主要給大家介紹了關于JS如何設置滾動屬性默認自動滾動到底部(overflow:scroll;)的相關資料,通過本文介紹的的JavaScript代碼示例,你可以實現(xiàn)滾動條默認在最底部的效果,需要的朋友可以參考下2023-10-10
Openlayers實現(xiàn)擴散的動態(tài)點(水紋效果)
這篇文章主要為大家詳細介紹了Openlayers實現(xiàn)擴散的動態(tài)點,水紋效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-08-08
JavaScript開發(fā)者必備的10個Sublime Text插件
Sublime Text幾乎是任何開發(fā)者在其工具箱的必備應用程序,這篇文章主要介紹了JavaScript開發(fā)者必備的10個Sublime Text插件,感興趣的小伙伴們可以參考一下2016-02-02

