CTFHub | 文件包含

news2024/11/28 7:31:38

0x00 前言

        CTFHub 专注网络安全、信息安全、白帽子技术的在线学习,实训平台。提供优质的赛事及学习服务,拥有完善的题目环境及配套 writeup ,降低 CTF 学习入门门槛,快速帮助选手成长,跟随主流比赛潮流。

        

        

0x01 题目描述

文件包含:

        (无)

网页显示内容

        

        

0x02 解题过程

简单分析网页显示内容中的源代码,可以发现一处代码 include $_GET["file"] ,其中 include 语句可以动态地包含用户发送的 GET 请求。详细的方法将在后续的内容中进行逐步解释。

        

网页显示内容页面下方有一处英文提示:" i have a shell, how to use it ? "。大致意思是,我有一个 shell ,应该怎么去使用它。点击 shell 英文的超链接,跳转到一个新页面。新页面显示的内容是一句话木马,连接密码是 ctfhub 。

​        

根据网页内容的代码提示,初步判断这是一个文件包含漏洞。这里使用蚁剑测试连接,向网页发送 GET 请求,设置传递参数 file=shell.txt 。这样做就可以将网页链接中的页面包含到主页面 index.php 中。添加链接页面的一句话木马的密码测试连接发现成功连接。

http://challenge-f46df033d876ecf2.sandbox.ctfhub.com:10800/?file=shell.txt

        

检查目录列表中的文件,发现此题 flag 。

​        

        

0x03 代码解析

error_reporting(0);    //关闭错误报告

        代码解析:在 php 语言中, error_reporting(0); 函数表示为关闭错误报告,error_reporting() 函数可以使用其来报告什么类型的 PHP 错误。

        

实例:

函数说明
error_reporting(0);关闭错误报告
error_reporting(E_ERROR | E_WARNING | E_PARSE);报告 runtime 错误
error_reporting(E_ALL);报告所有错误
ini_set("error_reporting", E_ALL);等同 error_reporting(E_ALL);
error_reporting(E_ALL & ~E_NOTICE);报告 E_NOTICE 之外的所有错误

表格来源于[w3school/PHP error_reporting() 函数]

        

if (isset($_GET['file'])) {
    ...
}

        代码解析: isset() 函数用于检测变量是否已设置并且非 NULL 。如果检测到用户通过 GET 请求传递了 file 参数,那么则执行代码块中的代码。

        

    if (!strpos($_GET["file"], "flag")) {
        include $_GET["file"];
    } else {
        echo "Hacker!!!";
    }

        代码解析:strpos() 函数查找字符串在另一字符串中第一次出现的位置。如果未检测到 $_GET["file"] 参数中出现 flag 字符串,那么则执行文件包含,将用户通过 GET 请求传递的参数包含到当前页面中。否则输出字符串 "Hacker!!!" 。注意 !strpos 中添加了 ! 表示按位取反的意思。

        

else {
    highlight_file(__FILE__);
}

        代码解析:如果未检测到用户通过 GET 请求传递了 file 参数,那么执行 highlight_file 函数,此函数对文件进行 PHP 语法高亮显示。用户可以直接在网页中查看到语法高亮显示后的 PHP 代码。

        

        

0x04 参考文献

[1].w3school. PHP error_reporting() 函数[EB/OL]. [2023-05-16]. https://www.w3school.com.cn/php/func_error_reporting.asp.

[2].runoob. PHP isset() 函数[EB/OL]. [2023-05-16]. https://www.runoob.com/php/php-isset-function.html.

[3].w3school. PHP strpos() 函数[EB/OL]. [2023-05-16]. https://www.w3school.com.cn/php/func_string_strpos.asp.

        

        

0x05 总结

文章内容为学习记录的笔记,由于作者水平有限,文中若有错误与不足欢迎留言,便于及时更正。

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

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

相关文章

一篇文章让你上手Canal数据同步神技~

视频教程传送门: Canal极简入门:一小时让你快速上手Canal数据同步神技~_哔哩哔哩_bilibiliCanal极简入门:一小时让你快速上手Canal数据同步神技~共计13条视频,包括:01.课前导学与前置知识点、02.Canal组件了解、03.My…

光纤收发器可以连接光模块吗?

随着科技的进步发展,城市信息化速度的加快,光通信产品在数据中心和安防监控等场景中的运用越来越广泛,而这之间的连接则需要光模块和光纤收发器来实现。很多用户对光模块和光纤收发器的使用有些疑虑,两者该如何连接?又…

2023年5月实时获取地图边界数据方法,省市区县街道多级联动【附实时geoJson数据下载】

首先,来看下效果图 在线体验地址:https://geojson.hxkj.vip,并提供实时geoJson数据文件下载 可下载的数据包含省级geojson行政边界数据、市级geojson行政边界数据、区/县级geojson行政边界数据、省市区县街道行政编码四级联动数据&#xff0…

第7章链接:重定位、可执行目标文件、加载可执行目标文件

文章目录 7.7 重定位7.7.1 重定位表目7.7.2 重定位符号引用重定位PC相关的引用重定位绝对引用 7.8 可执行目标文件7.9 加载可执行目标文件 7.7 重定位 一旦链接器完成了符号解析这一步,它就把代码中的每个符号引用和确定的一个符号定义(也就是&#xff…

自学成材的黑客很多,但还是得掌握方法,给你黑客入门与进阶建议

建议一: 黑客七个等级(仅供参考) 黑客,对很多人来说充满诱惑力。很多人可以发现这门领域如同任何一门领域,越深入越敬畏,知识如海洋,黑客也存在一些等级,参考知道创宇 CEO ic&#…

如何把图片无损放大?教你图片怎么无损放大

随着数字图像技术的不断发展,图片无损放大成为了许多人关注的问题。当我们需要将小图片放大到更大的尺寸时,使用传统的放大方法可能会导致图片失真、模糊等质量问题。那么如何在保持高清晰度和精度的同时进行无损放大,一直是一个备受关注的课…

数字化时代,如何从战略设计到架构来打造智慧银行?

导语 | 随着人工智能、大数据、云计算等技术向纵深发展,数字化转型已成为银行发展的“必答题”。调整战略规划和架构重组、加大信息科技投入、推进科技人才队伍建设、持续推出数字化产品……近年来,深化数字化转型,以科技赋能金融服务已成为不…

【C++初阶】第十三篇:模板进阶(非类型模板参数、模板的特化以及模板的分离编译)

文章目录 一、非类型模板参数二、模板的特化2.1 概念2.2 函数模板特化2.3 类模板特化2.3.1 全特化2.3.2 偏特化/半特化 三、模板的分离编译3.1 什么是分离编译3.2 模板的分离编译3.3 解决方法 四、模板总结 一、非类型模板参数 模板参数类型可分为:类型形参和非类型…

通达信SCTR强势股选股公式,根据六个技术指标打分

SCTR指标(StockCharts Technical Rank)的思路来源于著名技术分析师约翰墨菲,该指标根据长、中、短三个周期的六个关键技术指标对股票进行打分,根据得分对一组股票进行排名,从而可以识别出强势股。 与其他技术指标一样,SCTR的设计…

中国社科院与美国杜兰大学能源管理硕士项目是你职场通关的密码吗

职场是一场没有硝烟的战争,想要在职场取得取胜,就要拥有超能力。从职场小白晋升到管理层一路走来诸多不易,想要坐稳或升得更高,要不断提升自己能力,要不间断地学习。社科院与美国杜兰大学能源管理硕士项目是你通关的密…

navicat连接oracle报错 ORA-28547

报错 原因 Navicat自带的oci.dll并不支持oracle11g 具体操作 1. 先用idea连接oracle,查看oracle版本 select * from v$version; 2. 去官网下载 Instant Client 地址: Oracle Instant Client Downloads 下载 选择对应的版本(下载时&#x…

未注册老域名扫描软件-免费未注册老域名挖掘

未注册老域名挖掘教程 在SEO优化中,老域名的价值不言而喻,它们的搜索引擎权重、离线广告效果等都比新域名更高。然而,如何挖掘出高质量的老域名并进行注册并非易事。今天,我们将介绍一款名为“147SEO老域名挖掘软件”的工具&…

【SpringBoot】二:自动配置

文章目录 1.自动配置类2. Import3. AutoConfigurationImportSelector4. AutoConfiguration 1.自动配置类 Spring Boot的自动装配机制会试图根据你所添加的依赖来自动配置你的Spring应用程序。 例如,如果你添加了Mysql依赖,而且你没有手动配置任何DataS…

从今天起,不再为 API 烦恼 !

做技术管理的童鞋,往往会陷入这样一种困境:疲于奔命,到处救火填坑,沟通推进,却挤不出时间思考对团队和项目来说真正重要的事情。 你有没有经历过这样的场景: 1. 下属老是改了接口但不维护文档,屡…

初探高并发—ExecutorCompletionService

初探高并发—ExecutorCompletionService 为什么要引入高并发 众所周知,程序中的代码是从下往下顺序执行的,当我们需要在一个方法中同时执行多个耗时的任务时所消耗时间就会大于等于这些任务消耗的累加时间。那么有没有一种办法可以让这些耗时的任务同时…

微信小程序入门04-后端脚手架搭建

我们上一篇已经介绍了权限系统的库表搭建,光有表还是不够的,我们还需要有一个后台系统和数据库进行交互。搭建后台的时候既需要选择使用什么语言,也需要选择框架。 框架分为前端框架和后端框架。在第一篇微信开发者工具搭建的时候我们其实前…

面试官:什么是防抖和节流?如何实现?应用场景?

防抖 与 节流 大厂面试题分享 面试题库 前后端面试题库 (面试必备) 推荐:★★★★★ 地址:前端面试题库 web前端面试题库 VS java后端面试题库大全 前言 防抖和节流作为很多大厂的经典面试题,问倒了许多小伙伴&a…

【Python-ESL】python-esl安装

pip install python-esl 时会报错: “error: command ‘swig’ failed with exit status 1” 报错原因是 因为 swig 软件未正确安装,当然对swig的版本也是有要求的,目前测试以下版本没有问题: swig3.0.63 python-ESL1.4.18(app-…

域名年龄查询工具-域名历史查询工具

批量域名历史查询工具 在近几年的网络营销中,老域名已经成为获取网站排名和SEO优化的重要途径。而对于购买这些老域名,了解域名的过往经历,可以帮助我们更好地评估域名的价值,并避免购买不良的域名。因此,今天我们将向…

微信小程序入门03-搭建权限系统,建库建表

我们准备零基础搭建一个小程序,小程序分为两部分,一个是用户访问的程序,可以是小程序也可以是H5。另外一个就是管理员使用的管理后台,后台第一个要实现的就是搭建权限系统。为了搭建权限系统,我们先需要梳理概念 1 RB…