DVWA系列之14 文件包含漏洞分析

程序开发人员通常会把可重复使用的函数写入到单个文件中,在使用某些函数时,直接调用此文件,而无需再次编写,这种调用文件的过程一般被称为包含。程序开发人员都希望代码更加灵活,所以通常会将被包含的文件设置为变量,用来进行动态调用,但正是由于这种灵活性,从而导致客户端可以调用一个恶意文件,造成文件包含漏洞。

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语法规范,可以发现这种文件可以直接显示其内容。

时间: 2024-10-11 18:28:19

DVWA系列之14 文件包含漏洞分析的相关文章

DVWA系列之16 文件包含漏洞挖掘与防御

下面我们来分析一下DVWA中文件包含漏洞的源码. 首先文件包含的主页面是D:\AppServ\www\dvwa\vulnerabilities\fi\index.php文件,文件中的主要代码部分: 在这段代码中,首先使用switch语句根据用户选择的安全级别,分别将low.php.medium.php.high.php赋值给变量$vulnerabilityFile,接下来使用require_once函数来包含用户所选择的页面,最后用include函数来包含变量$file. 变量$file正是来自

phpmyadmin任意文件包含漏洞分析(含演示)

0x01 漏洞描述 phpmyadmin是一款应用非常广泛的mysql数据库管理软件,基于PHP开发. 最新的CVE-2014-8959公告中,提到该程序多个版本存在任意文件包含漏洞,影响版本如下: phpMyAdmin 4.0.1 – 4.0.10.6 4.1.1 – 4.1.14.7 4.2.1 – 4.2.12 0x02 补丁分析 看到bobao.360.cn上提到了这个漏洞,于是我写个小分析吧,给渗透正没思路的人一个思路,也给学习代码审计的朋友一点资料. 前几天phpmyadmin出了个

DVWA篇四:文件包含漏洞

1      测试环境介绍 测试环境为OWASP环境中的DVWA模块 2      测试说明 2.1  什么时远程文件包含漏洞 什么才是"远程文件包含漏洞"?回答是:服务器通过php的特性(函数)去包含任意文件时,由于要包含的这个文件来源过滤不严,从而可以去包含一个恶意文件,而我们可以构造这个恶意文件来达到邪恶的目的. 涉及到的危险函数:include(),require()和include_once(),require_once() Include:包含并运行指定文件,当包含外部文件

thinkphp 5.x~3.x 文件包含漏洞分析

漏洞描述: ThinkPHP在加载模版解析变量时存在变量覆盖的问题,且没有对 $cacheFile 进行相应的消毒处理,导致模板文件的路径可以被覆盖,从而导致任意文件包含漏洞的发生. 主要还是变量覆盖的问题. 漏洞范围: 漏洞影响版本: 5.0.0<=ThinkPHP5<=5.0.18 .5.1.0<=ThinkPHP<=5.1.10 本地复现环境: tp5.0.15   php version :7.0.12 <?php namespace app\index\contro

[WEB安全]phpMyadmin后台任意文件包含漏洞分析(CVE-2018-12613)

0x00 简介 影响版本:4.8.0--4.8.1 本次实验采用版本:4.8.1 0x01 效果展示 payload: http://your-ip:8080/index.php?target=db_sql.php%253f/../../../../../../../../etc/passwd 0x02 漏洞分析 漏洞产生点位于:index.php文件54-67行 可以看到如果要包含文件成功,必需条件有5个: 1.不为空 2.字符串 3.不以index开头 4.不在$target_blackli

【DVWA(九)】文件包含漏洞

文件包含漏洞 前言: 由于开发人员编写源码,将可重复使用的代码插入到单个的文件中,并在需要的时候将它们包含在特殊的功能代码文件中,然后包含文件中的代码会被解释执行.由于并没有针对代码中存在文件包含的函数入口做过滤,导致客户端可以提交恶意构造语句提交,并交由服务器端解释执行.文件包含攻击中WEB服务器源码里可能存在inlcude()此类文件包含操作函数,通过客户端构造提交文件路径,是该漏洞攻击成功的最主要原因. 如果攻击者为动态包含指令指定一个有效文件,那么该文件的内容会被传递给 PHP 解析器,

ThinkCMF框架任意内容包含漏洞分析复现(写入shell+文件包哈)

ThinkCMF框架任意内容包含漏洞分析复现 0x00 简介 ThinkCMF是一款基于PHP+MYSQL开发的中文内容管理框架,底层采用ThinkPHP3.2.3构建.ThinkCMF提出灵活的应用机制,框架自身提供基础的管理功能,而开发者可以根据自身的需求以应用的形式进行扩展.每个应用都能独立的完成自己的任务,也可通过系统调用其他应用进行协同工作.在这种运行机制下,开发商场应用的用户无需关心开发SNS应用时如何工作的,但他们之间又可通过系统本身进行协调,大大的降低了开发成本和沟通成本. 0x

【CVE-2020-1938】Tomcat AJP 任意文件读取和包含漏洞分析记录

0x00 前言 2020年2月20日傍晚,在某群看到有群友问CNVD的tomcat文件包含漏洞有什么消息没 接着看到安恒信息应急响应中心公众号发了个漏洞公告 随后chy师傅也在群里发了个阿里云的公告链接 根据安恒和阿里云公告给出的信息我们知道是tomcat ajp服务出了问题,但具体是哪里出了问题却不知道.(这个时候我就在想阿里云是怎么知道ajp服务出了问题的呢? 以tomcat7为例给出的修复版本是100,遂去github看commit,看100版本release之前的commit记录. 0x

文件包含漏洞原理分析

文件包含这个漏洞,用我自己的话来说就是程序员在网站设计中,为方便自己在设计构架时,使用了一些包含的函数,就像'文件包含'这几个字的字面意思一样,在文件中,包含一个文件. 我在总结这篇文章的时候看了,其他人总结的,感觉别人总结的很是详细,就像一开始我只认为包含只有PHP代码中才存在,后来我再整理复习的时候,才发现,包含这个漏洞在各大语言中,都存在的,只不过现在大部分网站都是PHP网站,所以存在这个漏洞的几率大一点,好了不废话了,我开始整理了. 文件包含 程序开发人员一般会把重复使用的函数写到单个文