您现在的位置是:首页 >其他 >攻防世界—file_include网站首页其他

攻防世界—file_include

Len1Mi 2024-09-29 12:01:03
简介攻防世界—file_include

在这里插入图片描述

  • 打开之后发现是一段php代码
    在这里插入图片描述
  • 可以看出这是段代码有文件包含漏洞

  • 下面是学习部分。。。
  • 着急看题解继续往下滑。。。谢谢。。。

文件包含漏洞(File Inclusion Vulnerability)是一种Web应用程序常见的安全漏洞,也是攻击者常用的攻击手段之一。这种漏洞通常存在于代码中,允许攻击者将未经过滤的输入作为参数传递给文件包含函数(如include()、require()等),从而加载恶意脚本或者敏感文件到服务器上,并进一步攻击系统。攻击者可以通过该漏洞窃取敏感信息、执行任意命令、控制服务器等。
常见的文件包含漏洞有两种类型:
1.本地文件包含(LFI):攻击者通过提交恶意请求,可以访问服务器上本地已存在的文件。这种漏洞通常发生在应用程序没有对用户输入进行过滤的情况下,接受用户的输入来指定文件名或者路径,并将其传递给包含函数的时候。
2.远程文件包含(RFI):攻击者通过构造一个URL链接,将远程服务器上的恶意脚本地址传递给包含函数,从而导致远程服务器上的脚本被执行。

  • 点击这里跳转B站学习什么是文件包含漏洞
  • 我对于文件包含的理解就是,设计网页时会有很多重复的地方,所以我们将重复的地方写在一个文件里,利用include()等函数将其包含进来,避免写过多重复的代码。和我们写类、写对象一个道理。
  • …/是返回上层目录
  • 包含文件的内容只要符合php语法都能被当成php代码进行解析,无关后缀名是什么。
    在这里插入图片描述
  • 可以用burp修改信息请求头,配合日志文件进行攻击,因为直接存入日志的话特殊符号会被编码,所以用burp更改一下头,让他不要被编码。
    在这里插入图片描述
  • php://filter,他后面跟两个参数,/convert.base64-encode第一个是以什么转换器对他进行编码的,/resource=include.php第二个是要过滤的流是哪个文件
    在这里插入图片描述在这里插入图片描述

  • 好嘞,学习结束
  • 构造payload
?filename=php://filter/read=convert.base64-encode/resource=check.php

在这里插入图片描述

  • 果然不会这么简单,然后就有请度娘,看样子应该是被过滤了,那就搜一下怎么绕过过滤

转换过滤器
如同 string.* 过滤器,convert.* 过滤器的作用就和其名字一样。
转换过滤器是 PHP 5.0.0 添加的。对于指定过滤器的更多信息,请参考该函数的手册页。
https://www.php.net/manual/zh/filters.convert.php
在激活 iconv 的前提下可以使用 convert.iconv.* 压缩过滤器,
等同于用 iconv() 处理所有的流数据。 该过滤器不支持参数,
但可使用输入/输出的编码名称,组成过滤器名称,
比如 convert.iconv..
或 convert.iconv./
(两种写法的语义都相同)。

 支持的字符编码

当前 mbstring 模块支持以下的字符编码。这些字符编码中的任意一个都能指定到 mbstring 函数中的 encoding 参数。

该 PHP 扩展支持的字符编码有以下几种:

UCS-4*
UCS-4BE
UCS-4LE*
UCS-2
UCS-2BE
UCS-2LE
UTF-32*
UTF-32BE*
UTF-32LE*
UTF-16*
UTF-16BE*
UTF-16LE*
UTF-7
UTF7-IMAP
UTF-8*
ASCII*
EUC-JP*
SJIS*
eucJP-win*
SJIS-win*
ISO-2022-JP
ISO-2022-JP-MS
CP932
CP51932
SJIS-mac(别名:MacJapanese)
SJIS-Mobile#DOCOMO(别名:SJIS-DOCOMO)
SJIS-Mobile#KDDI(别名:SJIS-KDDI)
SJIS-Mobile#SOFTBANK(别名:SJIS-SOFTBANK)
UTF-8-Mobile#DOCOMO(别名:UTF-8-DOCOMO)
UTF-8-Mobile#KDDI-A
UTF-8-Mobile#KDDI-B(别名:UTF-8-KDDI)
UTF-8-Mobile#SOFTBANK(别名:UTF-8-SOFTBANK)
ISO-2022-JP-MOBILE#KDDI(别名:ISO-2022-JP-KDDI)
JIS
JIS-ms
CP50220
CP50220raw
CP50221
CP50222
ISO-8859-1*
ISO-8859-2*
ISO-8859-3*
ISO-8859-4*
ISO-8859-5*
ISO-8859-6*
ISO-8859-7*
ISO-8859-8*
ISO-8859-9*
ISO-8859-10*
ISO-8859-13*
ISO-8859-14*
ISO-8859-15*
ISO-8859-16*
byte2be
byte2le
byte4be
byte4le
BASE64
HTML-ENTITIES(别名:HTML)
7bit
8bit
EUC-CN*
CP936
GB18030
HZ
EUC-TW*
CP950
BIG-5*
EUC-KR*
UHC(别名:CP949)
ISO-2022-KR
Windows-1251(别名:CP1251)
Windows-1252(别名:CP1252)
CP866(别名:IBM866)
KOI8-R*
KOI8-U*
ArmSCII-8(别名:ArmSCII8)
  • 编码能力强的师傅直接写一个自动测就行了,我这种菜鸡就一个一个试了
  • 还好让我试出来了
?filename=php://filter//convert.iconv.SJIS*.UCS-4*/resource=check.php

在这里插入图片描述

  • 然后我猜这样看不到flag的话,那么一定有一个文件叫flag.php
  • 所以我就改了一下第二个参数
?filename=php://filter//convert.iconv.SJIS*.UCS-4*/resource=flag.php

在这里插入图片描述


知识点:文件包含漏洞

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。