@1kbfree
2018-03-22T00:48:28.000000Z
字数 966
阅读 1273
渗透
什么是文件包含漏洞
服务器通过php的特性(函数)去包含任意文件时,由于要包含的这个文件来源过滤不严,从而可以去包含一个恶意文件,而我们可以构造这个恶意文件来达到邪恶的目的。
为什么存在文件包含漏洞
一般来说,程序员开发人员通常会把可重复使用的函数写到单个文件中,在使用某些函数是,直接调用此文件,而无须再次编写,这种调用文件的过程一般称为包含。
很多人会问,为什么呢,因为开发人员都喜欢重复的代码可以不用重复写,直接调用某个函数或某个文件里面的代码,这就大大缩短了开发人员的开发时间了,但就是因为这种"缩短",导致了文件包含漏洞的产生。
我个人感觉这不算漏洞吧...... 只能说是语言设置的问题了。
简单小实例(随便演示的,下面还有讲)
我们这里有2个文件:
然后我们访问1.php并且给他传参:
然后我们使用菜单链接这个URL:
链接成功:
看到这里有很多人会问为什么了对吧。现在我来讲解一下,首先在1.php的文件中我们写了这一段代码
$in = include($_GET['file_name']);
这段代码的意思是:将包含(包含就是将某个文件的代码"写到"这个网站上面)GET请求过来file_name的值。而2.txt的内容就是一段PHP代码,为什么要写PHP代码呢,因为之前说了,这是因为1.php的include()
将2.txt的内容写到了1.php所以说,在2.txt的内容,都会在1.php里被解释为php代码来执行,而这里是写的一句话木马,那么有理可知了,就可以拿起我们的菜刀来连接了
只要文件内容符合PHP语法规范,任何扩展名的文件都可以被PHP解析。
PHP文件包含
有很多人会以为只有PHP才有文件包含漏洞,其实不是的,还有像ASP,JSP都有,只是因为PHP的包含函数功能强大,所以比较常见。
PHP中提供了4个文件包含函数,分别是: