点击阅读
文件包含函数:
include、require、include_once、require_once、highlight_file
show_source 、readfile 、file_get_contents 、fopen 、file
从题目file_get_contents就看出来了
1 | file:// — 访问本地文件系统 |
从题目代码来看
1 | <!--$file = $_GET['file']; |
php://协议
php:// 访问各个输入/输出流(I/O streams),如:
php://filter
php://input
php://filter
php://filter用于读取源码,php://input用于执行php代码
感觉file://协议应该不行,file:// 用于访问本地文件系统,不受allow_url_fopen与allow_url_include的影响
即file:// [文件的绝对路径和文件名]
php://filter做过很多,暑假HGAME里的草莓社区-2
这里把当时写的wp贴一下:
通过PHP内置协议直接读取../flag
的代码
之前做过类似的题,blog上有记录,直接搬过来改一改
php://filter/read=convert.base64-encode/resource=../flag.php
同草莓社区-1一样加在show_maopian.php?mao=
后面
flag还是在response里,将返回的base64解码即可
php://input协议
php://input 可以访问请求的原始数据的只读流, 将post请求中的数据作为PHP代码执行
这里应该可以
php://input 可以用来生成一句话
data://协议
这个没怎么见过
用法大概就是?file=data://text/plain,<?php phpinfo()?>
或?file=data://text/plain;base64,PD9waHAgcGhwaW5mbygpPz4=
//也可以写成:
这里可以用?file=data://text/plain,meizijiu
zip://, bzip2://, zlib://协议
zip://, bzip2://, zlib:// 均属于压缩流,可以访问压缩文件中的子文件,不需要指定后缀名
file.jpg是个zip压缩包,里面有txt的php代码
zip://
?file=zip://D:/soft/phpStudy/WWW/file.jpg%23phpcode.txt
%23是#的url编码
bzip2://
?file=compress.bzip2://D:/soft/phpStudy/WWW/file.jpg
zlib://
?file=compress.zlib://D:/soft/phpStudy/WWW/file.jpg