标签:http https 源码 路径 简单 inf 并且 开发人员 调用
**文件包含**:
开发人员将相同的函数写入单独的文件中,需要使用某个函数时直接调用此文件,无需再次编写,这种文件调用的过程称文件包含。
**文件包含漏洞**:
开发人员为了使代码更灵活,会将被包含的文件设置为变量,用来进行动态调用,从而导致客户端可以恶意调用一个恶意文件,造成文件包含漏洞。
require:找不到被包含的文件,报错,并且停止运行脚本。
include:找不到被包含的文件,只会报错,但会继续运行脚本。
require_once:与require类似,区别在于当重复调用同一文件时,程序只调用一次。
include_once:与include类似,区别在于当重复调用同一文件时,程序只调用一次。
?page=a.php
?home=b.html
?file=content
?file=../../../../etc/passwd
?page=file:///etc/passwd
?home=main.cgi
?page=http://www.a.com/1.php
http://1.1.1.1/../../../../dir/file.txt
1.分析源码,发现没有对变量$Page做任何过滤:
2首先随便点击一下file1.php发现url中只有include.php变为file1.php
3于是打开根目录;找到对应的路径,自己编写一个文件丢进去(或者查找一下该路径中有没有隐藏文件,可以将其显示出来)
我这里,显示出了他的隐藏文件;
*这里也可以先试上上级目录下的文件
1.查看源代码:很显然过滤了绝对路径的http和https,以及相对路径的../
2.若是要用绝对路径,可以考虑换成Http://.也可一看他的隐藏文件;
注意:当然远程文件包含有一个大前提那就是开启了allow_url_include。
1.查看源代码:
由于*是通配符,所以在查看问件事必须以file开头,因此利用file协议包含本地文件进行绕过;
标签:http https 源码 路径 简单 inf 并且 开发人员 调用
原文地址:https://www.cnblogs.com/my-boke/p/14324567.html