詳解PHP中pathinfo()函數(shù)導(dǎo)致的安全問題
定義和用法
pathinfo() 函數(shù)以數(shù)組或字符串的形式返回關(guān)于文件路徑的信息。
返回的數(shù)組元素如下:
- [dirname]:返回文件路徑中的目錄部分
- [basename]:返回文件路徑中文件名的部分
- [extension]:返回文件路徑中文件的類型的部分
語法
pathinfo(path,options)
參數(shù)
- path: 必需。規(guī)定要檢查的路徑。
- options 可選。規(guī)定要返回的數(shù)組元素。默認(rèn)是 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"
應(yīng)用
目錄不可控沒有執(zhí)行權(quán)限
pathinfo, 一種偽靜態(tài)的用法,path_info 模式:http://www.xxx.com/index.php / 模塊 / 方法:
sb.txt 被當(dāng)成了模塊,實際上請求的還是 6.php
一句話就執(zhí)行了。
過 WAF 注入
本地安裝 apache 安全狗
已知在開啟 pathinfo 的情況下 (默認(rèn)開啟) 可以這樣訪問
常用注入語句被攔截
pathinfo 模式不攔截
總結(jié)
以上就是這篇文章的全部內(nèi)容了,本文也算是拋磚引玉,更多用途請自測!希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。
相關(guān)文章
JS如何設(shè)置滾動屬性默認(rèn)自動滾動到底部(overflow:scroll;)
這篇文章主要給大家介紹了關(guān)于JS如何設(shè)置滾動屬性默認(rèn)自動滾動到底部(overflow:scroll;)的相關(guān)資料,通過本文介紹的的JavaScript代碼示例,你可以實現(xiàn)滾動條默認(rèn)在最底部的效果,需要的朋友可以參考下2023-10-10Openlayers實現(xiàn)擴散的動態(tài)點(水紋效果)
這篇文章主要為大家詳細(xì)介紹了Openlayers實現(xiàn)擴散的動態(tài)點,水紋效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-08-08js父窗口關(guān)閉時子窗口隨之關(guān)閉完美解決方案
admin注銷的時候,或者main.html關(guān)閉的時候,如何讓打開的所有新窗口一起關(guān)閉,下面有個不錯的解決方案,大家可以參考下2014-04-04JavaScript開發(fā)者必備的10個Sublime Text插件
Sublime Text幾乎是任何開發(fā)者在其工具箱的必備應(yīng)用程序,這篇文章主要介紹了JavaScript開發(fā)者必備的10個Sublime Text插件,感興趣的小伙伴們可以參考一下2016-02-02