提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
在做CTF题的时候文件包含题出现多次使用伪协议,学习了下伪协议就顺便写个博客防止以后忘记
参考这篇文章:PHP伪协议总结
一、file://
协议
1. 条件:
allow_url_fopen:off/on
allow_url_include :off/on
2. 作用:
用于访问本地文件系统,在CTF中通常用来读取本地文件的且不受allow_url_fopen与allow_url_include的影响。
include()/require()/include_once()/require_once()参数可控的情况下,如导入为非.php文件,则仍按照php语法进行解析,这是include()函数所决定的。
3. 说明:
file:// 文件系统是 PHP 使用的默认封装协议,展现了本地文件系统。当指定了一个相对路径(不以/、、\或 Windows 盘符开头的路径)提供的路径将基于当前的工作目录。在很多情况下是脚本所在的目录,除非被修改了。使用 CLI 的时候,目录默认是脚本被调用时所在的目录。在某些函数里,例如 fopen() 和 file_get_contents(),include_path 会可选地搜索,也作为相对的路径。
4. 用法:
/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
5. 示例:
①file://[文件的绝对路径和文件名]
http://127.0.0.1/include.php?file=file://E:\phpStudy\PHPTutorial\WWW\phpinfo.txt
② [文件的相对路径和文件名]
http://127.0.0.1/include.php?file=./phpinfo.txt
③ [http://网络路径和文件名]
http://127.0.0.1/include.php?file=http://127.0.0.1/phpinfo.txt