栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

【ctf】文件包含漏洞

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【ctf】文件包含漏洞

文件包含
开发人员将相同的函数写入单独的文件中,需要使用某个函数时直接调用此文件,无需再次编写,这种文件调用的过程称文件包含

文件包含漏洞
开发人员为了使代码更灵活,会将被包含的文件设置为变量,用来进行动态调用,从而导致客户端可以恶意调用一个恶意文件,造成文件包含漏洞

相关函数:
include()
include_once()
require()
require_once()

include()函数当遇到错误的信息时,会进行报错,但仍然会继续执行下面的代码
include_once()函数与include()函数功能类似,但所包含的信息只执行一次
require()函数当遇到错误的信息时,会进行报错,并且不会再继续执行下面的代码
require_once()函数与require()函数功能类似,但所包含的信息只执行一次

这里我们进行测试:

先将两个文件写好


这里发现phpinfo.php中的代码被运行两次,对应代码被包含的次数

这里可以看出include()函数和include_once()函数的区别:
include()函数只能包含一次

这里可以看到,当包含的文件不存在时,include()函数会报错,但仍然会继续运行下面的代码

在这里我们可以看出include()函数与require()函数的区别:
当包含文件不存在时,require()函数会报错,也不会继续运行下面的代码了

包含的实现:
包含的时候,并不一定去包含php文件
类似于文件1.phps、1.xxx、1.txt等等
只要内容中有php代码,则可以直接包含并解析执行
如果不能解析代码,则会在页面返回源代码

远程包含比较危险,使用的需要开启许多条件,一般不会开启

这里我们拿一题bugku的题目进行讲解:
http://114.67.246.176:10978
打开页面

发现file可控

打开网页源代码发现upload.php

打开发现是文件上传,且可以控制file,那么考虑文件包含
发现有文件后缀的校验,之前提到过

直接上马,将后缀改为.jpg

打开发现:

之前提到过,如果内容可以解析则解析并执行代码,如果内容不能解析则返回源码
这里看到,返回了_ eval(@$_POST['a']); _
考虑后端可能进行了过滤
试一下script的马

执行成功,使用蚁连接,已经可以拿到flag

这里我们查看一下源码,为什么不能使用 来连接?

这里看出,将 替换成了 _ ,我们才看到之前的_ eval(@$_POST['a']); _

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/299719.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号