文件包含知识点详细总结

如果想看图片和观感更好的话,可以直接去我的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.mzph.cn/news/681127.shtml

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

相关文章

【Linux】进程概念(冯诺依曼体系结构、操作系统、进程)-- 详解

一、冯诺依曼体系结构 1、概念 &#xff08;1&#xff09;什么是冯诺伊曼体系结构&#xff1f; 数学家冯诺伊曼于 1946 年提出存储程序原理&#xff0c;把程序本身当作数据来对待&#xff0c;程序和该程序处理的数据用同样的方式储存。 冯诺伊曼理论的要点是&#xff1a;计算…

【COMP337 LEC1】

Data Preprocessing Phase 数据预处理 1. Feature extraction 特征提取 1. An object is described by a collection of attributes 一个对象可以由一组特征来描述 2. A feature is a property or a characteristic of an objects 物体的属性 2. Data cleaning 数据清洗 Extra…

【EAI 019】Eureka: Human-Level Reward Design via Coding LLM

论文标题&#xff1a;Eureka: Human-Level Reward Design via Coding Large Language Models 论文作者&#xff1a;Yecheng Jason Ma, William Liang, Guanzhi Wang, De-An Huang, Osbert Bastani, Dinesh Jayaraman, Yuke Zhu, Linxi Fan, Anima Anandkumar 作者单位&#xff…

【ES6】Promise

Promise 回调地狱 const fs require(fs);fs.readFile(./a.txt, utf-8, (err, data) > {if(err) throw err;console.log(data);fs.readFile(./b.txt, utf-8, (err, data) > {if(err) throw err;console.log(data);fs.readFile(./c.txt, utf-8, (err, data) > {if(er…

python:PyPDF2 从PDF中提取目录

我发现 pypdf 和 pypdf2 的作者是同一人&#xff1a;Mathieu Fenniak pip install pypdf2 ; pypdf2-3.0.1-py3-none-any.whl (232 kB) 编写 pdf_read_dir.py 如下 # -*- coding: utf-8 -*- """ pypdf23.0.1 从PDF中提取目录 """ import os…

pm2启动的node项目访问不了,npm start却可以访问

netstat -ntlp输入该命令&#xff0c;查看启动的服务端口是否有被监听到&#xff0c;如3001&#xff0c;4000之类的&#xff0c;是node项目启动时候自己配的那个&#xff0c; 若没有&#xff0c;则执行 pm2 delete [app-id/app-name] 先删除启动的这个项目 例如pm2 delete my…

第三百二十二回

文章目录 1. 概念介绍2. 使用方法2.1 基本用法2.2 缓冲原理 3. 示例代码4. 内容总结 我们在上一章回中介绍了"FadeInImage组件"相关的内容&#xff0c;本章回中将介绍CachedNetworkImage组件.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念介绍 我们在本章…

C#win form解决导入CSV文件数据缺失问题

winform CSV文件入库数据缺失 public string TransferCSVData(string csvFile, string tablename, string connectionString){try{DataTable dataTable new DataTable();string[] columnNames File.ReadLines(csvFile, Encoding.GetEncoding("GBK")).First().Spli…

C++函数对象-运算符函数对象 - 位运算 - 实现 x y 的函数对象 (std::bit_and)

任何定义了函数调用操作符的对象都是函数对象。C 支持创建、操作新的函数对象&#xff0c;同时也提供了许多内置的函数对象。 运算符函数对象 C 针对常用的算术和逻辑运算定义了很多函数对象&#xff1a; 位运算 实现 x & y 的函数对象 std::bit_and template< class…

《Java 简易速速上手小册》第7章:Java 网络编程(2024 最新版)

文章目录 7.1 网络基础和 Java 中的网络 - 揭开神秘的面纱7.1.1 基础知识7.1.2 重点案例&#xff1a;实现一个简单的聊天程序7.1.3 拓展案例 1&#xff1a;使用 UDP 进行消息广播7.1.4 拓展案例 2&#xff1a;建立一个简单的 Web 服务器 7.2 创建客户端和服务器 - 构建沟通的桥…

Netty源码系列 之 FastThreadLocal源码

目录 Netty优化方案之 FastThreadLocal 前言 ThreadLocal ThreadLocal是干什么的&#xff1f; 为什么要使用ThreadLocal工具类去操控存取目标数据到Thread线程 &#xff1f; ThreadLocal的使用场景 目标数据存储到Thread线程对象的哪里&#xff1f; 怎么样把一个目标数据…

学习Android的第六天

目录 Android TextView 文本框 TextView 基础属性 范例 带阴影的TextView 范例 带边框的TextView 范例 带图片(drawableXxx)的TextView 范例1 范例2 使用autoLink属性识别链接类型 范例 TextView 显示简单的 HTML 范例1 范例2 SpannableString & Spannable…

政安晨:演绎在KerasCV中使用Stable Diffusion进行高性能图像生成

小伙伴们好&#xff0c;咱们今天演绎一个使用KerasCV的StableDiffusion模型生成新的图像的示例。 考虑计算机性能的因素&#xff0c;这次咱们在Colab上进行&#xff0c;Colab您可以理解为在线版的Jupyter Notebook&#xff0c;还不熟悉Jupyter的的小伙伴可以去看一下我以前的文…

python+ flask+MySQL旅游数据可视化81319-计算机毕业设计项目选题推荐(免费领源码)

摘要 信息化社会内需要与之针对性的信息获取途径&#xff0c;但是途径的扩展基本上为人们所努力的方向&#xff0c;由于站在的角度存在偏差&#xff0c;人们经常能够获得不同类型信息&#xff0c;这也是技术最为难以攻克的课题。针对旅游数据可视化等问题&#xff0c;对旅游数据…

[英语学习][28][Word Power Made Easy]的精读与翻译优化

[序言] 译者的这次翻译, 如果按照一一对应的单词翻译&#xff0c;正确率是100%, 但可惜的是, 从整体的翻译上, 正确率下降到30%. 也就是说没有正确表达出作者的逻辑. [英文学习的目标] 提升自身的英语水平, 对日后编程技能的提升有很大帮助. 希望大家这次能学到东西, 同时加入…

端口映射原理及实验概要

端口映射是一种网络技术&#xff0c;用于将外部网络请求定向到内部网络中的特定服务或设备。其原理可以分为两个部分&#xff1a;NAT&#xff08;Network Address Translation&#xff09;和端口转发。 NAT是一种将网络数据包的目标IP地址和端口从一个网络地址转换为另一个网络…

Git仓库

1、安装 sudo yum install -y git 2、什么叫版本控制Git&&Gitee&&Github 对源代码的历史修改进行维护&#xff0c;保留历史的所有的修改痕迹。 在Linux中&#xff0c;版本控制是指对软件、文档等项目的不同版本进行管理和追踪的过程。通常使用版本控制系统&…

图表自动化开篇

目录 前言&#xff1a; 使用 Canvas 或者 SVG 渲染 选择哪种渲染器 代码触发 ECharts 中组件的行为 前言&#xff1a; 图表自动化一直以来是自动化测试中的痛点&#xff0c;也是难点&#xff0c;痛点在于目前越来越多公司开始构建自己的BI报表平台但是没有合适的自动化测试…

BLE蓝牙安全机制

1. 蓝牙配对 蓝牙配对是建立安全连接的关键过程。对于传统蓝牙应采用SSP配对方式&#xff0c;而低功耗蓝牙4.0和4.1的版本应使用legacy pairing配对方式&#xff0c;4.2以后的版本应采用Secure connection的配对方式。 传统的蓝牙采用的配对方式如下&#xff1a; 蓝牙2.1版本…

1012: 【C1】【循环】【入门】均值

题目描述 给出一组样本数据&#xff0c;计算其均值。 输入 输入有两行&#xff0c;第一行包含一个整数n&#xff08;1&#xff1c;n&#xff1c;100&#xff09;&#xff0c;代表样本容量&#xff1b;第二行包含n个绝对值不超过1000的浮点数&#xff0c;代表各个样本数据。 …