php伪协议
- 🍀支持为协议的函数
-
* 🍁文件包含函数
- 🍁 文件操作类函数
- 🍀伪协议
-
* 🍁 file://
- 🍁 http://https://
- 🍁ftp://
- 🍁 php://
-
* 🍁php://input
-
* 🔥例题讲解:
- 🍁php://filter
-
- 🍁 data://
-
* * 🔥例题讲解
- 🍁 compress.zlib:// compress.bzip2:// zip://
- 🏆结束语
🍀支持为协议的函数
🍁文件包含函数
include();
include_once();
require();
require_once();
举个例子
include(文件名) ;
作用是如果文件名下的文件中有php代码,就会执行php代码,其他的部分直接输出
🍁 文件操作类函数
fopen();
file();
readfile();
file_get_contents();
......
举个例子
file_get_contents(文件名);
作用是直接读出文件名下文件的内容
🍀伪协议
🍁 file://
作用是访问本地文件系统
不受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)网址
文件操作函数需开启allow_url_fopen,文件包含需同时开启allow_url_include和allow_url_fopen。
用法:
http://example.com/file.php?var1=val1&var2=val2
http://user:password@example.com
可以自己搭建一个网站然后利用漏洞
🍁ftp://
作用:访问ftp(s)URLs
文件操作函数需开启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
可以访问亲求的原始数据只读流
可以理解为这一串话整个是一个特殊的文件名,和include搭配的话,因为include可以读取文件名下的内容并且有php代码就执行,可是这个特殊的文件名是找不到的,所以我们就可以自己写文件内容
文件操作函数需开启allow_url_fopen,文件包含需同时开启allow_url_include和
allow_url_fopen。
🔥例题讲解:
做题首先要读懂代码
很明显,这个代码的意思就是说过滤flag,如果没有flag就可以包含文件
具体怎么做呢?
上文所说,我们利用php://input可以自己写文件并且执行,那么我们可以传参php://input然后在下面写php代码
🍁php://filter
php://filter 是一种元封装器,设计用于数据流打开时的筛选过滤应用
本地文件无论allow_url_fopen,allow_url_include是否开启都可以使用,allow_url_fopen开启时文件操作函数里resource可以是远程的,allow_url_include也开启包含resource才可以是远程的。
用法:
php://filter/read=convert.base64-encode/resource=c:/windows/win.ini
讲解一下每个部分的作用
read是要执行的操作
convert.base64-encode的意思是读出的内容经过一次base64编码
resource后面跟的是读取内容的路径
参数(作为路径的一部分)
名称 | 描述 |
---|---|
resource=<要过滤的数据流> | 这个参数是必须的。它指定了你要筛选过滤的数据流。 |
read=<读链的筛选列表> | 该参数可选。可以设定一个或多个过滤器名称,以管道符( |
write=<写链的筛选列表> | 该参数可选。可以设定一个或多个过滤器名称,以管道符( |
<;两个链的筛选列表> | 任何没有以 read= 或 write= 作前缀的筛选器列表会视情况应用于读或写链。 |
字符串过滤器
名称 | 描述 |
---|---|
string.rot13 | 进行rot13转换 |
string.toupper | 将字符全部大写 |
string.tolower | 将字符全部小写 |
string.strip_tags | 去除空字符、HTML 和 PHP 标记后的结果 |
编码过滤器
onvert.iconv.utf-8.utf-7|
将utf-8编码转换为utf-7编码,这样再继续使用base64编码写文件时候,不会因为特殊符号无法新建文件(windows)
—|—
convert.base64-encode/convert.base64-decode| base64编码解码
onvert.quoted-printable-encode/convert.quoted-printable-decode| quoted-
printable 编码解码
🍁 data://
数据流封装器,直接就是数据。
文件操作函数需开启allow_url_fopen,文件包含需同时开启allow_url_include和
allow_url_fopen。
用法
data://text/plain,<?php phpinfo()?>
data://text/plain;base64,PD9waHAgcGhwaW5mbygpPz4=
第一个就直接执行后面的php代码,第二个的意思是将后面的一串经过base64解码后执行(用来绕过过滤)
🔥例题讲解
这里编码完最后其实有一个+,但是如果+不处理就无法执行,所以我们提前url编码一次,+的url编码是%2b
🍁 compress.zlib:// compress.bzip2:// zip://
用法:
compress.zlib://file.gz
compress.bzip2://file.bz2
zip://archive.zip#dir/file.txt
🏆结束语
如果感兴趣,可以订阅一下专栏!!持续更新网络安全方面的内容!!
学习计划安排
我一共划分了六个阶段,但并不是说你得学完全部才能上手工作,对于一些初级岗位,学到第三四个阶段就足矣~
这里我整合并且整理成了一份【282G】的网络安全从零基础入门到进阶资料包,需要的小伙伴可以扫描下方CSDN官方合作二维码免费领取哦,无偿分享!!!
如果你对网络安全入门感兴趣,那么你需要的话可以
点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!
①网络安全学习路线
②上百份渗透测试电子书
③安全攻防357页笔记
④50份安全攻防面试指南
⑤安全红队渗透工具包
⑥HW护网行动经验总结
⑦100个漏洞实战案例
⑧安全大厂内部视频资源
⑨历年CTF夺旗赛题解析