CTFHub | 文件包含

本文介绍了CTFHub平台上的一个挑战,涉及文件包含漏洞的利用。通过分析网页源代码,发现存在动态包含用户GET请求的代码。利用这一漏洞,结合提示找到一句话木马并成功连接,最终找到flag。文章还解析了PHP的相关代码,如error_reporting、isset和strpos函数的用法。
摘要由CSDN通过智能技术生成

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 总结

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
ctfhub备份文件可能包括网站源码的备份文件和vim编辑器中的交换文件。网站源码的备份文件通常具有常见的备份文件名和后缀,例如.bak文件。你可以使用Burp Suite工具来发送链接并抓取备份文件,然后查找flag。在vim编辑器中,使用文件名前缀为"."的交换文件来备份编辑过的文件内容,例如.index.php.swp。可以使用vim-r插件来查看和恢复交换文件。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [ctfhub web全部做题记录(持续跟新)](https://download.csdn.net/download/weixin_38682790/14045490)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [CTFHub技能树——备份文件下载](https://blog.csdn.net/weixin_59480274/article/details/124187053)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [CTFHub技能树之备份文件下载(胎教级解析)](https://blog.csdn.net/qq_64948897/article/details/126089587)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

尼泊罗河伯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值