由bugku baby lfi 2一题引入LFI漏洞(本地文件包含)

文件包含漏洞:

通常分为本地文件包含(LFI)和远程文件包含(RFI)两种类型。

本地文件包含(LFI):

本地文件包含漏洞指的是攻击者能够通过应用程序,动态包含本地文件系统中的文件,通俗来说就是通过浏览器包含web服务器上的文件。这种漏洞最常见于服务器端脚本语言如PHP中的代码,攻击者可以通过构造恶意的文件路径来包含本地文件。成因通常是由于开发者在编写代码时没有正确过滤用户输入,或者将用户输入直接用于文件包含操作而未进行充分验证。

远程文件包含(RFI):

远程文件包含漏洞则是指应用程序对外部资源的引用没有经过充分的验证,导致攻击者可以向应用程序注入远程文件路径,并使应用程序从远程服务器上下载并执行恶意代码。这种漏洞可能会导致严重的安全问题,包括执行任意远程代码。成因通常是由于应用程序在包含外部资源时没有进行足够的验证,并且对用户提供的输入信任过高

文件包含php伪协议:

1,

遇到文件包含需要读取源码可以使用php://filter协议:

读:php://filter/resource=文件名

php://filter/read=convert.base64-encode/resource=文件名

写:php://filter/resource=文件名&txt=文件内容

php://filter/write=convert.base64-encode/resource=文件名&txt=文件内容

2,

data://和php://input作用相同,如果碰到input被过滤的情况可以用其替代。和php:input不同的是data://需要 allow_url_fopen、allow_url_include都需要打开(on)。

格式也稍稍有点不同,全部是在GET实现的

3,

data://text/plain ,是固定格式,后面如果有过滤可以用base64,内容可以是命令,也可以输出一些东西,看题目行事

file.php?file=data:text/plain,<?php phpinfo();?>

file.php?file=data://text/plain;base64,SSBsb3ZlIFBIUAo=

4,

phar://伪协议:

这个参数是就是php解压缩包的一个函数,不管后缀是什么,都会当做压缩包来解压。

用法:?file=phar://压缩包/内部文件 phar://xxx.png/shell.php (PHP > =5.3.0 压缩包需要是zip协议压缩,rar不行),将木马文件压缩后,改为其他任意格式的文件都可以正常使用。

步骤: 写一个一句话木马文件shell.php,然后用zip协议压缩为shell.zip,然后将后缀改为png等其他格式。

5,

zip://伪协议:

zip伪协议和phar协议类似,但是用法不一样。

用法:?file=zip://[压缩文件绝对路径]#[压缩文件内的子文件名] zip://xxx.png#shell.php。

但使用zip协议,需要指定绝对路径,同时将#编码为%23,之后填上压缩包内的文件。

?file=zip://C:\phpStudy\WWW\FileInclusion\phpinfo.zip%23phpinfo.txt

条件: PHP > =5.3.0,注意在windows下测试要5.3.0<PHP<5.4 才可以 #在浏览器中要编码为%23,否则浏览器默认不会传输特殊字符。

6,

包含session

利用条件:session文件路径已知,且其中内容部分可控。
思路:结合phpmyadmin,因为phpmyadmin每次登录时,会带上session

session文件的绝对路径可在phpinfo中查看,session.save_path

常见的php-session存放位置:

/var/lib/php/sess_PHPSESSID
/var/lib/php/sess_PHPSESSID
/tmp/sess_PHPSESSID
/tmp/sessions/sess_PHPSESSID

在基本的LFI攻击中,我们可以使用(../)或简单地(/)从目录中直接读取文件的内容,../../../../敲的足够多就能跳转到根目录下../../../../etc/passwd

题目bugku baby lfi 2:

我们注意到hint:被准许的路径中,有一个名为“languages”的目录

在标题和提示中我们都能了解到这是一个本地文件包含漏洞,关键信息甚至flag可能就在/etc/passwd里面

根据选择语言的提示,我们的参数名可能是language,尝试了file,language作为参数名后确定传参给language。

做题思路步骤:

我们的目标是要包含到/etc/passwd,那显而易见需要我们跳到根目录再进行包含,这里试了../../../../../etc/passwd提示不合法,那我们先访问当前目录下的languages再尝试跳回根目录,再去访问我们的目标

"./" 是用来表示当前目录的相对路径符号,它通常用于指定相对于当前工作目录的文件路径。只要../打的足够多就能跳回根目录,因此paylload如下:

?language=./languages/../../../../../../etc/passwd

"./" 的作用是将文件路径 "./languages/../../../../../../etc/passwd" 解释为相对于当前工作目录的路径。也就是说,它尝试访问当前工作目录下的 "languages" 目录,然后向上返回六级目录("../")以到达根目录,最后访问 "/etc/passwd" 文件

最后一行即是flag

  • 10
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
已知某网站存在本地文件包含漏洞LFI),但无法上传任何文件,那么仍然可以利用以下方式进行攻击: 1. 获取敏感信息:利用LFI漏洞可以读取目标服务器上的本地文件,可以尝试获取敏感信息,如密码文件、配置文件、日志文件等。通过分析这些文件内容,可能找到登陆凭证、数据库连接信息、敏感数据等。 2. 执行恶意指令:通过LFI漏洞,攻击者可以执行恶意代码或系统指令。例如,可以调用特定系统指令获取服务器敏感信息、添加用户、修改文件权限等。通过恶意指令的执行,攻击者可以获取更大的权限。 3. 利用远程文件包含:攻击者可以在远程服务器上放置恶意文件,并利用LFI漏洞实现文件包含。一旦目标网站存在对远程资源(如http、ftp等)的文件包含,攻击者即可通过LFI漏洞植入的远程URL地址执行恶意代码。 4. 利用日志文件:如果目标网站记录访问日志,并使用相对路径记录文件名或请求参数,那么可以通过LFI漏洞读取日志文件,并向其中植入恶意请求,以获取额外的信息或实现进一步的攻击。 5. 文件包含链:利用LFI漏洞,可以从一个受漏洞影响的文件访问其他文件,从而形成文件包含链。攻击者可以通过该链访问任意文件,甚至可以获得源码信息。 综上所述,即使无法上传文件,仍然可以通过本地文件包含漏洞进行攻击。因此,网站管理者应及时修复LFI漏洞,确保服务器安全

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值