前言
在buuctf上刷题,又刷到了php伪协议,正好总结一下。
文件包含漏洞
开发者不想重复写相同的代码,于是,就把相同的代码写到文件里面,当想使用这些代码时,直接调用就可以了。而在编程语言中,会把这些文件当成变量,于是恶意用户就可能把恶意文件传入进来。
include()
PHP伪协议
想了解PHP伪协议,我们就从字面上逐层剖析。
什么叫做协议?协议是一种标准规范,定义了设备之间如何进行通信和交换信息比如,在URL中,我们有很多常见的。格式为
http://
ftp://
file://
PHP伪协议,就是php://
那么,PHP的协议为什么还要叫“伪”呢?伪就说明这个并不是真正的协议,而是PHP用来模拟访问资源的方式。
所以,PHP伪协议在获取资源上有很大的用处。这里我会介绍几个常见的PHP伪协议
1 . php://input 可以访问原始数据的只读流,可以读取POST请求的参数

这就是一个使用方法举例
2 . php://filter是一种访问本地文件的方法
格式为php://filter/read=convert.base64-encode/resource=index.php
/read=convert.base64-encode/表示读取的方式为base64编码
resource=index.php表示文件的来源是index.php
为什么要使用base64编码呢?其实呀,如果不把文件编码了,他就会直接执行。我们就看不到文件的内容了。
3 . data伪协议
主要用于数据流的读取,如果输入的是php代码,就会直接执行
data://text/plain;base64,xxxxxx(base64编码后的数据)
什么时候用PHP伪协议呢
涉及文件包含漏洞的
inclde
require
highlight_file
file_get_contents
fopen(比较常见)

81

被折叠的 条评论
为什么被折叠?



