??今日學(xué)習(xí)目標(biāo):
??學(xué)習(xí)php偽協(xié)議
?創(chuàng)作者:賢魚
?預(yù)計時間:35分鐘
??個人主頁:賢魚的個人主頁
??專欄系列:網(wǎng)絡(luò)安全
??賢魚的個人社區(qū),歡迎你的加入 賢魚擺爛團(tuán)
??如果有需要可以查看下面文章
25分鐘了解php?php基礎(chǔ)
??支持為協(xié)議的函數(shù)
??文件包含函數(shù)
include();
include_once();
require();
require_once();
舉個例子
include(文件名) ;
作用是如果文件名下的文件中有php代碼,就會執(zhí)行php代碼,其他的部分直接輸出
?? 文件操作類函數(shù)
fopen();
file();
readfile();
file_get_contents();
......
舉個例子
file_get_contents(文件名);
作用是直接讀出文件名下文件的內(nèi)容
??偽協(xié)議
?? file://
作用是訪問本地文件系統(tǒng)
不受allow_url_fopen和allow_url_include影響
用法:
/path/to/file.ext
relative/path/to/file.ext
fileInCwd.ext
C:/path/to/winfile.ext
C:\path\to\winfile.ext
\\smbserver\share\path\to\winfile.ext
file:///path/to/file.ext
?? http://https://
作用是訪問http(s)網(wǎng)址
文件操作函數(shù)需開啟allow_url_fopen,文件包含需同時開啟allow_url_include和allow_url_fopen。
用法:
http://example.com/file.php?var1=val1&var2=val2
http://user:password@example.com
可以自己搭建一個網(wǎng)站然后利用漏洞
??ftp://
作用:訪問ftp(s)URLs
文件操作函數(shù)需開啟allow_url_fopen,文件包含需同時開啟allow_url_include和
allow_url_fopen。
用法:
ftp://user:password@example.com/pub/file.txt
ftps://example.com/pub/file.txt
?? php://
作用是訪問各個輸出輸出流
??php://input
可以訪問親求的原始數(shù)據(jù)只讀流
可以理解為這一串話整個是一個特殊的文件名,和include搭配的話,因為include可以讀取文件名下的內(nèi)容并且有php代碼就執(zhí)行,可是這個特殊的文件名是找不到的,所以我們就可以自己寫文件內(nèi)容
文件操作函數(shù)需開啟allow_url_fopen,文件包含需同時開啟allow_url_include和
allow_url_fopen。
??例題講解:
做題首先要讀懂代碼
很明顯,這個代碼的意思就是說過濾flag,如果沒有flag就可以包含文件
具體怎么做呢?
上文所說,我們利用php://input可以自己寫文件并且執(zhí)行,那么我們可以傳參php://input然后在下面寫php代碼
??php://filter
php://filter 是一種元封裝器,設(shè)計用于數(shù)據(jù)流打開時的篩選過濾應(yīng)用
本地文件無論allow_url_fopen,allow_url_include是否開啟都可以使用,allow_url_fopen開啟時文件操作函數(shù)里resource可以是遠(yuǎn)程的,allow_url_include也開啟包含resource才可以是遠(yuǎn)程的。
用法:
php://filter/read=convert.base64-encode/resource=c:/windows/win.ini
講解一下每個部分的作用
read是要執(zhí)行的操作
convert.base64-encode的意思是讀出的內(nèi)容經(jīng)過一次base64編碼
resource后面跟的是讀取內(nèi)容的路徑
參數(shù)(作為路徑的一部分)
名稱 | 描述 |
---|---|
resource=<要過濾的數(shù)據(jù)流> | 這個參數(shù)是必須的。它指定了你要篩選過濾的數(shù)據(jù)流。 |
read=<讀鏈的篩選列表> | 該參數(shù)可選??梢栽O(shè)定一個或多個過濾器名稱,以管道符( |
write=<寫鏈的篩選列表> | 該參數(shù)可選。可以設(shè)定一個或多個過濾器名稱,以管道符( |
<;兩個鏈的篩選列表> | 任何沒有以 read= 或 write= 作前綴的篩選器列表會視情況應(yīng)用于讀或?qū)戞湣?/td> |
字符串過濾器
名稱 | 描述 |
---|---|
string.rot13 | 進(jìn)行rot13轉(zhuǎn)換 |
string.toupper | 將字符全部大寫 |
string.tolower | 將字符全部小寫 |
string.strip_tags | 去除空字符、HTML 和 PHP 標(biāo)記后的結(jié)果 |
編碼過濾器
onvert.iconv.utf-8.utf-7 | 將utf-8編碼轉(zhuǎn)換為utf-7編碼,這樣再繼續(xù)使用base64編碼寫文件時候,不會因為特殊符號無法新建文件(windows) |
---|---|
convert.base64-encode/convert.base64-decode | base64編碼解碼 |
onvert.quoted-printable-encode/convert.quoted-printable-decode | quoted-printable 編碼解碼 |
?? data://
數(shù)據(jù)流封裝器,直接就是數(shù)據(jù)。
文件操作函數(shù)需開啟allow_url_fopen,文件包含需同時開啟allow_url_include和
allow_url_fopen。
用法
data://text/plain,<?php phpinfo()?>
data://text/plain;base64,PD9waHAgcGhwaW5mbygpPz4=
第一個就直接執(zhí)行后面的php代碼,第二個的意思是將后面的一串經(jīng)過base64解碼后執(zhí)行(用來繞過過濾)
??例題講解
這里編碼完最后其實有一個+,但是如果+不處理就無法執(zhí)行,所以我們提前url編碼一次,+的url編碼是%2b
?? compress.zlib:// compress.bzip2:// zip://
用法:
compress.zlib://file.gz
compress.bzip2://file.bz2
zip://archive.zip#dir/file.txt
??結(jié)束語
如果感興趣,可以訂閱一下專欄?。〕掷m(xù)更新網(wǎng)絡(luò)安全方面的內(nèi)容?。?/mark>文章來源:http://www.zghlxwxcb.cn/news/detail-777758.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-777758.html
到了這里,關(guān)于【網(wǎng)絡(luò)安全篇】php偽協(xié)議-漏洞及其原理的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!