攻防世界—file_include

2023-11-20

在这里插入图片描述

  • 打开之后发现是一段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

在这里插入图片描述


知识点:文件包含漏洞

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

攻防世界—file_include 的相关文章

  • 如何在 PHP 中从字符串类名实例化? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 如何创建返回方法名称的新实例 不幸的是我收到这个错误 错误 类名必须是有效的对象或字符串 这是我的代码 class Foo public f
  • 如何使用配置文件 (.ebextensions) 在 AWS Elastic Beanstalk 上安装 PHP IMAP 扩展?

    有谁知道如何使用配置文件 ebextensions 在 AWS Elastic Beanstalk 上安装和启用 PHP IMAP 扩展 我使用的是 64 位 Amazon Linux 2017 03 v2 4 0 运行 PHP 7 0 1
  • 获取今天的科普特日期

    我正在寻找获取今天的科普特日期与任何代码类型类似php or javascript在我的网站标题中显示科普特日期 我需要阿拉伯语或英语版本 我试图找到它 但没有找到类似的英文内容 参考 http www copticchurch net e
  • 将 OAuth WRAP 访问令牌直接保存在客户端计算机上的 cookie 中吗?

    我计划建立一个可以访问 oauth 包装框架的网站 我正在考虑将访问令牌按原样存储在客户端计算机上 我不想在服务器上维护临时令牌等数据库 我应该做吗 或者我应该加密它 首先 为什么他们不使用 OAuth 2 0 您可以将 OAuth 凭据存
  • Zend Framework 中的动态默认模块

    有谁知道在 Zend Framework 中动态设置默认模块并且不会遇到命名空间问题的方法 例如 我想要做的是有一个允许加载的模块表 其中一个设置为默认模块 例如 我可能有 admin blog calendar 作为可以加载的模块 如果我
  • Ajax文件上传

    我想使用 Ajax 和 php 上传文件 我有一个表格
  • 如何从脚本中创建新的 Joomla 用户帐户?

    我们正在为 Joomla 创建一个 XML API 允许合作伙伴网站在我们的网站上为其用户创建新帐户 我们已经创建了一个独立的 PHP 脚本来处理和验证 API 请求 但现在我们需要实际创建新帐户 我们最初只想进行 CURL 调用来提交注册
  • PHP 的脚手架 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 PHP 中有什么东西可以像 Rails 一样创建基本的脚手架吗 编辑 我需要一些东西来快速原型化 一些框架比如Symfony http www sym
  • Laravel/00webhost 错误 404。在此服务器上找不到请求的 URL

    1 将我的文件上传到 000webhost 我将公用文件夹中的所有文件放置到公共 html然后我创建了一个名为laravel我在那里上传了所有其他文件 这是我的目录结构 laravel app 引导程序 config 公共 html 索引
  • 将IP保存到数据库中

    当用户登录时 我想将他们的 IP 保存在数据库中 我该怎么做呢 MySQL 字段最适合使用哪种类型 获取IP的PHP代码是什么样的 我正在考虑将其用作登录 会话内容的额外安全功能 我正在考虑使用用户现在拥有的 IP 检查用户从数据库登录的
  • 从 php 执行 bash 脚本并立即输出回网页

    我有一组 bash 和 Perl 脚本 开发在 Linux Box 上部署所需的目录结构 可选 从svn导出代码 从这个源构建一个包 这在终端上运行良好 现在 我的客户请求此流程的 Web 界面 例如 某些页面上的 创建新包 按钮将一一调用
  • Laravel 登录后重定向回来

    登录后如何重定向返回页面 在 Laravel 5 2 中 认证控制器 protected redirectTo 重定向用户
  • 使用 :hover 作为元素的内联样式(使用 HTML/CSS/php)[重复]

    这个问题在这里已经有答案了 可能的重复 如何将 a hover 规则嵌入到文档中间的样式属性中 https stackoverflow com questions 131653 how do i embed an ahover rule i
  • php oracle客户端oci8安装出现什么问题

    我尝试了安装 PHP Oracle 客户端的所有过程 1 我安装了客户端版本8和32位 2 我在php ini中取消了oci的注释 3 重新启动Wamp 4 不确定是否真的安装 但我在 php ini 中得到了引用 5 但仍然无法连接 泰汉
  • 当我使用 session_start() 时,Xampp 7.0.1 Apache 崩溃

    当我在 PHP 中使用 session start 启动会话时 我的 Apache 服务器停止工作 我正在使用 Windows 版 Xampp 7 0 1 我的配置文件如下所示 即使我把它放在文件的第一行 它也不起作用 有人知道如何解决这个
  • PHP switch case 在 case 中存在多个值

    我有一个变量保存值 每周 每月 季度 和 年度 还有另一个变量保存值从 1 到 10 switch var2 case 1 var3 Weekly break case 2 var3 Weekly break case 3 var3 Mon
  • 设置大型电子邮件通知系统有哪些方法?

    我的公司有一个用 PHP 构建的网站 我们使用内置的 PHP 电子邮件功能每天向订阅者发送数千封电子邮件 这是一个糟糕的主意 它堵塞了我们的服务器 并且需要几个小时才能完成整个批次 现在我已经研究过像 MailChimp 这样的群发邮件服务
  • 使用 file_get_content 发布数据

    我已经做了一些关于如何使用的研究file get content与帖子 我也读过this one https stackoverflow com questions 2445276 how to post data in php using
  • 禁用 WooCommerce 手动/编辑订单的电子邮件通知

    需要 WooCommerce 专业知识 我需要禁用手动创建的订单的电子邮件通知 我必须使用处理状态 由于处理订单状态的自定义挂钩 我无法创建自定义状态 理想情况下 手动订单页面中可以勾选一个复选框 勾选后 它将禁止在每种状态下向客户发送电子
  • 如何将变量插入 PHP 数组?

    我在网上查了一些答案 但都不是很准确 我希望能够做到这一点 id result id info array id Example echo info 0 这有可能吗 您需要的是 不推荐 info array id Example varia

随机推荐

  • git 新添加一个项目

    如何将一个新的项目放到制定的git地址上 1 创建一个项目 2 在githup上添加一个仓库 3 在命令行模式下 在指定的目录下 git init 此处需要修改一下ignore文件 git remote add origin https g
  • jvm之栈、堆

    1 Java Virtual Machine 人群当中 一位叫java的小伙子正向周围一众人群细数着自己取得的荣耀与辉煌 就在此时 c老头和c 老头缓步走来 看着被众人围住的java c老头感叹地对着身旁的c 说道 原以为你就可以挑起我的梁
  • 反斜杠“\”与斜杠“/” 的区别

    与 的区别为 用途不同 系统不同 网址不同 一 用途不同 1 只能用来表示目录 2 技能作为除法符号或者间隔符号使用 也能用来表示目录 二 系统不同 1 用作目录时 适用于windows系统 2 用作目录时 适用于unix系统 也可用于wi
  • Kali安装配置中的一些小细节

    整理文档时 找到了一年前的一些文档 零零散散 在其中看到了一篇在初学kali时写的注意点 我根据更新做了一些修改 都适用于kali最新版 希望能帮助一些自学 初学者比当年的我更快弄懂 Ubuntu系统学习 主机名 kali name rid
  • Tcl-10. 字符串比较,匹配,替换,类别,映射,string 相关

    一 字符串比较 string compare string equal 我们在 expr 和控制语句如 if while 中可用比较运算符 等来进行字符串比较 但是如不注意的话就会产生问题 首先必须用双引号来将字符串值括起来 这样表达式语法
  • ant-design-vue 全局和局部引入组件

    1 全局引入 在main js里面引入 import Vue from vue import ant design vue dist antd css import Antd from ant design vue Vue use Antd
  • FPGA功耗估计(二)

    针对于Altera的Cyclone III 做出了静态功耗 对于Altera 其提供了一个功耗早期估计工具 可以在官网上下到 首先需要将宏设置为安全 在excel选型中选择文件 之后便可看到 根据相应的选择 红框部分 可以查看静态功耗 对于
  • Error:(3, 32) java: 程序包org.springframework.boot不存在

    1 Error 3 32 java 程序包org springframework boot不存在 近期使用IDEA2020 1版本创建springboot项目的时候 运行主启动类后 突然就报错 错误如下 找了很多解决办法 刷新了很多遍Mav
  • 画时序图软件——TimeGen和Timing Designer下载

    在写实验报告的时候需要画波形图 但是手头没有很好的软件 就上网搜了一些 分享出来 这里分享的是TimeGen和Timing Designer两个软件 资源均来自网上 有侵权请联系 TimeGen使用和安装都比较简单 我发的应该里面有破解方法
  • RT-Thread记录(七、IPC机制之邮箱、消息队列)

    讲完了线程同步的机制 我们要开始线程通讯的学习 线程通讯中的邮箱消息队列也属于 RT Thread 的IPC机制 目录 前言 一 邮箱 1 1 邮箱控制块 1 2 邮箱操作 1 2 1 创建和删除 1 2 2 初始化和脱离 1 2 3 发送
  • 骑马与砍杀服务器修复,《骑马与砍杀2》新热修补丁:联机社交系统更新、修复单机崩溃...

    目前 骑马与砍杀中文站官博公开了 骑马与砍杀2 7月1日Beta e1 4 1测试版公共版热修补丁 此次热修补丁会更新联机社交系统 同时还会修复单机崩溃问题 以下为官方原文 官博截图 公共版 版本 Native e1 4 1 Sandbox
  • qt 获取父类指针

    QWidget QWidget parentWidget const Returns the parent of this widget or 0 if it does not have any parent widget
  • 单向散列函数的性质

    一 根据任意长度计算出固定长度的散列值 首先 单向散列函数的输入必须能够是任意长度的消息 其次 无论输入多长的消息 单向散列函数必须都能够生成长度很短的散列值 如果消息越长生成的散列值越长的话就不好用了 从使用方便的角度 散列值的长度最好是
  • 运行Chrome中的app

    chrome apps
  • python中and与or的计算规则

    1 在纯and语句中 如果每一个表达式都不是假的话 那么返回最后一个 因为需要一直匹配直到最后一个 如果有一个是假 那么返回假 2 在纯or语句中 只要有一个表达式不是假的话 那么就返回这个表达式的值 只有所有都是假 才返回假 3 在or和
  • git 报错did not match any file(s) known to git

    前言 在使用gitLab中时遇到一个问题 就是我在gitLab新建分支后 在本地切换分支不成功 遇到了这个问题 在大佬的博客的指点下 顺利解决这个问题 记录下我一步一步解决问题的过程 最后面是我参考大佬的地址 有兴趣的朋友可以去看一下 问题
  • 使用花生壳将自己的Linux主机配置为服务器

    1 服务端花生壳配置 http service oray com question 11630 html 如果在客户端连接失败 在这里点击诊断 如果局域网服务器连接成功才行 不成功可能的原因有两个 1 配置不对 内网主机要写Linux主机的
  • matlab产生高斯噪声

    randn randn random normal distribution 是一种产生标准 正态分布的 随机数或 矩阵的函数 属于MATLAB函数 返回一个n n的随机项的矩阵 如果n不是个数量 将返回错误信息 MATLAB函数randn
  • 编程杂感两篇

    一 Null是个巨大的错误吗 为null正名 null可以表示未初始化的引用 为什么不强迫初始化 因为初始化时可能抛异常 变量声明放进try块 又可能有跨作用域的需求 一种常见的做法是大改语法引入maybe关键字支持代数类型 并且函数做模式
  • 攻防世界—file_include

    打开之后发现是一段php代码 可以看出这是段代码有文件包含漏洞 下面是学习部分 着急看题解继续往下滑 谢谢 文件包含漏洞 File Inclusion Vulnerability 是一种Web应用程序常见的安全漏洞 也是攻击者常用的攻击手段