PHP伪协议

PHP伪协议

file://

条件

  • allow_url_fopenon/off
  • allow_url_include:on/off

作用

  • 用于读取本地文件系统,不受allow_url_fopenallow_url_include的影响
  • include( ) /require( )/include_once()/require_once()参数可控的情况下,如导入为非.php文件,则仍按照php语法进行解析,这由include()函数所决定。

说明

file://文件系统是PHP使用的默认封装协议,展现了本地文件系统。当指定了一个相对路径(不以/、、\或 Windows盘符开头的路径)提供的路径将基于当前的工作目录。在很多情况下是脚本所在的目录,除非被修改了。使用CLI的时候,目录默认是脚本被调用时所在的目录。在某些函数里,例如fopen()file_get_contents(), include_path 会可选地搜索,也作为相对的路径。

用法

  • /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

示例

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

    http://127.0.0.1/include.php?file=file://E:\phpStudy\ PHPTutorial\WWW\phpinfo.php
  • file: //[文件的相对路径和文件名]

    http://127.0.0.1/include.php?file=./phpinfo.php
  • file: //[http://网络路径和文件名]

    http://127.0.0.1/include.php?file=http://127.0.0.1/phpinfo.php

http://&https://协议

条件

  • allow_url_fopenon
  • allow_url_include:on

作用

  • 作用:常规URL形式,允许通过HTTP 1.0GET方法,以只读访问文件或资源。
  • CTF中通常用于远程包含。

用法

  • http: //example.com
  • http: //example.com/file.php?var1=var1&var2=var2
  • http: //user:password@exampLe.com
  • https: //example.com
  • https: //example.com/file.php?var1=var1&var2=var2
  • https: //user:password@example.com

示例

http://127.0.0.1/include.php?file=http://127.0.0.1/phpinfo.php

php://协议

条件

  • allow_url_fopenon/off
  • allow_url_include:仅php://input php://stdin php://memory php://temp需要on

作用

  • php://访问各个输入/输出流I/O streams
  • CTF中经常使用的是php://filterphp://input
  • php://filter用于读取源码,php://input用于执行php代码。

说明

PHP提供了一些杂项输入/输出IO流,允许访问PHP的输入输出流、标准输入输出和错误描述符、内存中、磁盘备份的临时文件流以及可以操作其他读取写入文件资源的过滤器。

协议 作用
php://input 可以访问请求的原始数据的只读流,在POST请求中访问POSTdata部分,在enctype="multipart/form-data"的时候php://input是无效的。
php://output 只写的数据流,允许以printecho—样的方式写入到输出缓冲区。
php://memory php://temp (>=5.1.0)一个类似文件包装器的数据流,允许读写临时数据。两者的唯一区别是php://memory总是把数据储存在内存中,而php://temp会在内存量达到预定义的限制后(默认是2MB)存入临时文件中。临时文件位置的决定和sys_get_temp_dir()的方式一致。
php://filter (>=5.0.0)种元封装器,设计用于数据流打开时的筛选过滤应用。对于一体式(all-in-one)的文件函数非常有用,类似readfile()file()file_get_contents(),在数据流内容读取之前没有机会应用其他过滤器。

php://filter

说明

  • 经常使用的一种伪协议,一般用于任意文件读取,有时也可以用于getshell.在allow_url_fopenallow_url_include都为OFF的情况下也可以使用.

参数

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

例子

php://filter/[read/write]=string.[rot13/strip_tags/……]/resource=xxx
?file=php://filter/read=convert.base64-encode/resource=xxx.php
?file=php://filter/read=string.rot13/resource=xxx.php

php://input

说明

用于执行POST数据中的PHP代码

注意

enctype= "multipart/form-data"的时候php://input是无效的

示例

POST数据:<?php phpinfo()?>

http://127.0.0.1/index.php?file=php://input

data://

条件

  • allow_url_fopenon
  • allow_url_include:on

作用

PHP>=5.2.0起,可以使用data://数据流封装器,以传递相应格式的数据。通常可以用来执行PHP代码。

用法

  • data://text/plain,<?php%20phpinfo()?>
  • data://text/plain;base64,<?php%20phpinfo()?>

示例

  • data://text/plain,

    http://127.0.0.1/include.php?file=data://text/plain,
  • data://text/plain;base64,

    http://127.0.0.1/include.php?file=data://text/plain;base64,PD9waHAgcGhwaW5mbygpOz8%2b

zip://&bzip2://&zlib://

条件

  • allow_url_fopenon/off
  • allow_url_include:on/off

作用

zip://&bzip2://&zlib://均属于压缩流,可以访问压缩文件中的子文件,更重要的是不需要指定后缀名,可修改为任意后缀:jpg png gif xxx等等。

示例

  • zip://[压缩文件绝对路径]%23[压缩文件内的子文件名]

    压缩phpinfo.txtphpinfo.zip,压缩包重命名为phpinfo.jpg,并上传

    http://127.0.0.1/include.php?file=zip://E:\phpStudy\PHPTutorial\WWW\phpinfo.jpg%23phpinfo.txt
  • compress.bzip2: //file.bz2

    压缩phpinfo.txt为 phpinfo.bz2并上传(同样支持任意后缀名)

    http://127.0.0.1/include.php?file=compress.bzip2://E:\phpStudy\PHPTutorial\WWW\phpinfo.bz2
  • compress.zlib://file.gz

    压缩phpinfo.txt为phpinfo.gz并上传(同样支持任意后缀名)

    http://127.0.0.1/include.php?file=compress.zlib://E:\phpStudy\PHPTutorial\WWW\phpinfo.gz

phar://

作用

phar://协议与zip://类似,同样可以访问zip格式压缩包内容

示例

http://127.0.0.1/include.php?file=phar://E:/phpStudy/PHPTutorial/WWW/phpinfo.zip/phpinfo.txt

dict://

条件

  • allow_url_fopenon
  • allow_url_include:on

说明

与gopher协议一般都出现在ssrf协议中,用来探测端口的指纹信息。同时也可以用它来代替gopher协议进行ssrf攻击。

用法

  • 探测端口指纹

    http://127.0.0.1/?url=dict://192.168.0.0:6379

暂无评论

发送评论 编辑评论


|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇