CTFHub | 文件包含

news/2024/5/19 21:26:20 标签: web安全, CTF

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.niftyadmin.cn/n/328767.html

相关文章

B2B 客户支持,如何做好?

多年来,基于尖端技术的现代和个性化客户体验一直主导着企业对消费者(B2C)领域。然而,在企业对企业(B2B)行业中,出色的客户体验变得比以往任何时候都更加重要。许多组织正在开发类似于B2C市场中个…

OpenAI是什么?

OpenAI是一家人工智能技术公司,成立于2015年,总部位于美国旧金山。它的创始人包括埃隆马斯克等多名知名人士,公司的目标是推进人工智能技术的发展,同时确保人工智能的发展不会对人类造成负面影响。 OpenAI在研究和开发各种人工智能…

国家信息安全水平考试NISP证书(一级、二级、三级)

NISP证书是什么? NISP证书是国家信息安全水平考试(National Information Security Test Program,简称NISP),是通过中国信息安全测评中心执行塑造国家网络空间安全优秀人才项目。国家实行网络空间安全人才培养基地经营…

Linux系统编程学习 NO.2 ——环境配置和基础指令的学习

操作系统根据使用方式分类 操作系统按照使用类型可分为图形化操作系统和指令操作系统。图形化操作系统的本质其实也是根据指令来操作的。指令更贴近操作系统的底层。而我在学习Linux系统编程时,采用命令行的方式来学习。 补充一个小知识:早期命令行操作…

【JOSE约瑟 JZS-7E14/11静态可调延时中间继电器 自动控制电路 接通、分断电路】

JZS-7E14/11静态可调延时中间继电器品牌:JOSEF约瑟名称:静态可调延时中间继电器型号:JZS-7E14/11额定电压:6220VDC;6380VAC触点容量:10A/250V10A/220VDC功率消耗:≤6W 一 用途 JZS-7E系列中间继电器用于各种保护和自动控制装置中,以增加保护和控制回路的触点容量. …

标准C库函数fprintf(),sprintf(),snprintf()的函数使用方法(往文件中写入数据,将变量的值转换成字符串输出)

前言 如果,想要深入的学习标准C库中函数fprintf(),sprintf(),snprintf(),还是需要去自己阅读Linux系统中的帮助文档。 具体输入命令: man 3 fprintf/sprintf/snprintf即可查阅到完整的资料信息。 fprintf 函数 fprin…

常用好用的远程连接工具分享

1、RayLink 介绍: RayLink它是一款功能强大的远程控制软件,支持Windows、macOS、IOS以及Android等多种操作系统。同时,它还提供了手机端和桌面端两种不同的应用程序,可以通过手机控制电脑,也可以通过电脑控制手机。这…

某社交平台 x-s所有可用

本文以教学为基准、本文提供的可操作性不得用于任何商业用途和违法违规场景。 本人对任何原因在使用本人中提供的代码和策略时可能对用户自己或他人造成的任何形式的损失和伤害不承担责任。 最新版 x-s 没露任何版权请审核员认真对待谢谢。 【2023.05.16】 更新全站接口通用 …