title:文件包含漏洞
利用include()、require()、include_once()、require_once()和allow_url_include,allow_url_fopen,传入路径参数,任意读取
敏感路径:
Windows系统:
C:\boot.ini //查看系统版本
C:\windows\system32\inetsrv\MetaBase.xml //IIS配置文件
C:\windows\repair\sam //存储Windows系统初次安装的密码
C:\ProgramFiles\mysql\my.ini //Mysql配置
C:\ProgramFiles\mysql\data\mysql\user.MYD //MySQL root密码
C:\windows\php.ini //php配置信息
Linux/Unix系统:
/etc/password //账户信息
/etc/shadow //账户密码信息
/usr/local/app/apache2/conf/httpd.conf //Apache2默认配置文件
/usr/local/app/apache2/conf/extra/httpd-vhost.conf //虚拟网站配置
/usr/local/app/php5/lib/php.ini //PHP相关配置
/etc/httpd/conf/httpd.conf //Apache配置文件
/etc/my.conf //mysql配置文件
PHP伪协议:
php://filter/read=convert.base64-encode/resource=index.php
对包含的PHP文件进行base64编码,include函数就不会执行代码,而是显示在页面上
php://input 是一个只读的数据流,允许你以原始的形式访问 POST 请求中发送的数据。它绕过了传统的 $_POST
数组解析机制,因此对于处理非标准的或自定义编码的 POST 数据非常有用
与 $_POST
的比较
比较项 | php://input |
$_POST |
---|---|---|
数据编码支持 | 支持任何编码的 POST 数据 | 仅支持 application/x-www-form-urlencoded 和 multipart/form-data 编码的数据 |
数据解析 | 提供原始的 POST 数据,需要手动解析 | 自动解析 POST 数据,存储在关联数组中 |
内存使用 | 按需读取数据,节省内存 | 一次性解析所有数据,可能消耗大量内存 |
data://
封装协议,允许在URL中直接嵌入数据。这种协议可以与文件系统函数(如fopen()、copy()、file_exists()、filesize())一起使用