DVWA系列之14文件包含漏洞分析
程序开发人员通常会把可重复使用的函数写入到单个文件中,在使用某些函数时,直接调用此文件,而无需再次编写,这种调用文件的过程一般被称为包含。程序开发人员都希望代码更加灵活,所以通常会将被包含的文件设置为变量,用来进行动态调用,但正是由于这种灵活性,从而导致客户端可以调用一个恶意文件,造成文件包含漏洞。
成都创新互联公司长期为上千多家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为舒兰企业提供专业的成都网站设计、网站建设,舒兰网站改版等技术服务。拥有10年丰富建站经验和众多成功案例,为您定制开发。
PHP中提供了四个文件包含的函数,分别是include()、include_once()、require()和require_once(),它们的区别如下:
require找不到被包含的文件时会产生致命错误,并停止脚本运行。
include找不到被包含的文件时只会产生警告,脚本将继续运行。
include_once与include类似,唯一区别是如果该文件中的代码已经被包含,则不会再次包含。
require_once与require类似,唯一区别是如果该文件中的代码已经被包含,则不会再次包含。
比如我们看下面这个例子,01.txt是一个正常的文本文件,但文件内容却是符合PHP语法的代码:
在02.php文件中包含01.txt,代码如下:
将这两个文件都放到D:\AppServ\www目录,然后在浏览器中访问02.php,可以看到01.txt中的代码被正确执行了。接下来将02.txt文件的扩展名分别改为jpg、rar、doc、xxx进行测试,发现都可以正确显示phpinfo信息。由此可知,只要文件内容符合PHP语法规范,那么任何扩展名都可以被PHP解析。
我们再创建一个测试文件03.txt,文件内容是“Hello,world!”,并不符合PHP语法规范,可以发现这种文件可以直接显示其内容。
本文标题:DVWA系列之14文件包含漏洞分析
本文网址:http://scyanting.com/article/ppddcs.html