赞
踩
程序开发人员通常会把可重复使用的函数写到单个文件中,在使用某些函数时,直接用此文件,而无需
再次编写,这种调用文件的过程一般被称为包含。
程序开发人员都希望代码更加灵活,所以通常会将被包含的文件设置为变量,用来进行动态调用,但正
是由于这种灵活性,从而导致客户端可以调用一个恶意文件,造成文件包含漏洞。
以php,webapplication 中居多。
jsp,asp,很少
这与程序开发人员的水平无关,而问题在于语言设计的弊端。
文件包含常用函数
1.incudec() //找不到被包含的文件时只会产生警告(E_WARNING),脚本将继续执行;
2.incudec_once() //此语句和incudec()语句类似,唯一区别是如果该文件中的代码已经被包含,
则不会再次包含;
3.require() //找不到被包含的文件时会产生致命错误(E_COMPILE_ERROR),并停止脚本。
4.require_once() //此行语句和require()语句类似,唯一区别是如果该文件中的代码已经被包
含,则不会再次包含。
include_once() 和 require_once() 这两个函数只包含一次,适用于在脚本执行期想确保它只被包括
一次以避免函数重定义,变量重新赋值等问题。
当使用这四个函数包含一个新的文件时,该文件将作为PHP代码执行,PHP内核并不会在意该包含的文
件是什么类型。(无论是txt、图片文件,远程URL,全都作为PHP代码执行)
文件包含利用:
不管文件后缀是否是php,都会尝试当做php文件执行,如果文件内容为php则会正常执行并返回结
果,如果不是,则会原封不动地打印文件内容,所以文件包含漏洞常常会导致任意文件读取与任意命令
执行;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。