伪协议小总结

一.

file:// — 访问本地文件系统
http:// — 访问 HTTP(s) 网址
ftp:// — 访问 FTP(s) URLs
php:// — 访问各个输入/输出流(I/O streams)
zlib:// — 压缩流
data:// — 数据(RFC 2397)
glob:// — 查找匹配的文件路径模式
phar:// — PHP 归档
ssh2:// — 安全外壳协议 2
rar:// — RAR
ogg:// — 音频流
expect:// — 处理交互式的流

1.php伪协议:访问各个输入输出流

需要开启allow_url_fopen的:php://input、php://stdin、php://memory和php://temp

不需要开启allow_wrl_fopen的:php://filter

在CTF中经常使用的是php://filter和php://input

php://filter用于读取源码,php://input用于执行php代码

php://input需要post请求提交数据

php://filter可以get提交?a=php://filter/read=convert.base64-encode/resource=xxx.php

php://filter:


php://filter是一种元封装器,是PHP中特有的协议流,设计用于数据流打开时的筛选过滤应用,作用是作为一个“中间流”来处理其他流。

php://filter目标使用以下的参数作为它路径的一部分。复合过滤链能够在一个路径上指定

名称
resource=<要过滤的数据流>指定了你要筛选过滤的数据流。必选     
read=<读链的筛选列表>可以设定一个或多个过滤器名称,以管道符分隔可选
write=<写链的筛选列表>可以设定一个或多个过滤器名称,以管道符分隔。可选
<;两个链的筛选列表>
任何没有以 read= 或 write= 作前缀 的筛选器列表会视情况应用于读或写链。


 

2.data伪协议

data://伪协议,是数据流封装器,和php://相似,都是利用了流的概念,将原本的include的文件流重定向到了用户可控制的输入流中,简单来说就是执行文件的包含方法包含了你的输入流,通过包含你输入的payload来实现目的。
格式:?file=data://text/plain,payload ?>

3.file协议

file://用于访问本地文件系统

用法:file:// [文件的绝对路径和文件名]

4.zip://

zip://绝对路径\需要解压缩的文件%23子文件名  

5.phar://

类似zip,与zip协议不同的是zip协议为绝对路径,而phar协议为相对路径。

二.函数

1.include函数


可以放在PHP脚本的任意位置,一般放在流程控制的处理部分中。当PHP脚本执行到include指定引入的文件时,才将它包含并尝试执行。这种方式可以把程序执行时的流程进行简单化。当第二次遇到相同文件时,PHP还是会重新解释一次,include相对于require的执行效率下降很多,同时在引入文件中包含用户自定义函数时,PHP在解释过程中会发生函数重复定义问题。include载入成功后,返回1,失败则返回false。

2.require函数


require函数一般放在PHP脚本的最前面,PHP执行前就会先读入require指定引入的文件,包含并尝试执行引入的脚本文件。require的工作方式是提高PHP的执行效率,当它在同一个网页中解释过一次后,第二次便不会解释。但同样的,正因为它不会重复解释引入文件,所以当PHP中使用循环或条件语句来引入文件时,需要用到include。require载入成功返回1,失败无返回值。

3.include_once和require_once函数


分别与require / include作用相同,不同的是他们在执行到时会先检查目标内容是不是在之前已经导入过,如果导入过了,那么便不会再次重复引入其同样的内容。

4.highlight_file函数


highlight_file() 函数对文件进行语法高亮显示。

语法:highlight_file(filename,return) —— filename:必需。要进行高亮处理的 PHP 文件的路径。return:可选。如果设置 true,则本函数返回高亮处理的代码。

该函数通过使用 PHP 语法高亮程序中定义的颜色,输出或返回包含在 filename 中的代码的语法高亮版本。如果 return 参数被设置为 true,那么该函数会返回被高亮处理的代码,而不是输出它们。否则,若成功,则返回 true,失败则返回 false。

5.show_source函数


该函数是highlight_file函数的别名。

6.file_get_contents()

把整个文件读入一个字符串中。

该函数是用于把文件的内容读入到一个字符串中的首选方法。如果服务器操作系统支持,还会使用内存映射技术来增强性能。

语法
file_get_contents(path,include_path,context,start,max_length)

7.file函数

file() 函数把整个文件读入一个数组中。与 file_get_contents() 类似,不同的是 file() 将文件作为一个数组返回。数组中的每个单元都是文件中相应的一行,包括换行符在内。如果失败,则返回 false。

语法

file(path,include_path,context)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值