[HCTF 2018]WarmUp 1

[HCTF 2018]WarmUp 1

审题

  1. 观察题目,查看源代码,看到source.php。

image-20240108145814183

  1. 访问,看到源代码。

知识点

PHP的代码审计,include函数的应用,文件包含漏洞。

代码审计

 <?phphighlight_file(__FILE__);class emmm{public static function checkFile(&$page){$whitelist = ["source"=>"source.php","hint"=>"hint.php"];if (! isset($page) || !is_string($page)) {echo "you can't see it";return false;}if (in_array($page, $whitelist)) {return true;}$_page = mb_substr($page,0,mb_strpos($page . '?', '?'));if (in_array($_page, $whitelist)) {return true;}$_page = urldecode($page);$_page = mb_substr($_page,0,mb_strpos($_page . '?', '?'));if (in_array($_page, $whitelist)) {return true;}echo "you can't see it";return false;}}if (! empty($_REQUEST['file'])&& is_string($_REQUEST['file'])&& emmm::checkFile($_REQUEST['file'])) {include $_REQUEST['file'];exit;} else {echo "<br><img src=\"https://i.loli.net/2018/11/01/5bdb0d93dc794.jpg\" />";}  
?> 
  1. 整个代码可以分为俩个部分,一个是emmm类,另一个是file参数的获取。

    emmm类

    emmm类可以分为四个部分

第一部分:

   $whitelist = ["source"=>"source.php","hint"=>"hint.php"];if (! isset($page) || !is_string($page)) {echo "you can't see it";return false;}

这一部分有两个作用

  1. 定义$whitelist参数,也就是我们常说的白名单。
  2. 是判断传入的$page参数是否存在,并且是否为字符串。如果不满足这两个条件中的任意一个函数就会返回false。

第二部分

 if (in_array($page, $whitelist)) {return true;}

这个部分的内容很简单,就是判断page参数是否等于白名单里的内容,如果等于就返回true。

第三部分:

 $_page = mb_substr($page,0,mb_strpos($page . '?', '?'));if (in_array($_page, $whitelist)) {return true;}

这一部分也分为两部分

  1. 使用mb_substr函数让page参数中?之前的字符串被截取,后面的字符消失。
  2. 让被截取后的$page参数和白名单匹配,如果相等返回true。

第四部分:

$_page = urldecode($page);$_page = mb_substr($_page,0,mb_strpos($_page . '?', '?'));if (in_array($_page, $whitelist)) {return true;}echo "you can't see it";return false;}

这一部分和第二部分十分像,只是在开头加了一个url解码。

file获取(可以看成C语言中的main函数)

if (! empty($_REQUEST['file'])&& is_string($_REQUEST['file'])&& emmm::checkFile($_REQUEST['file'])) {include $_REQUEST['file'];exit;} else {echo "<br><img src=\"https://i.loli.net/2018/11/01/5bdb0d93dc794.jpg\" />";}  

这一部分十分简单,可以分为几个作用

  1. 判断file不为空,
  2. 判断是否为字符串
  3. 是否可以通过emmm类中的checkFile函数,也就是让它返回true。
  4. 如果以上条件都通过就进行include函数,include函数可以调用php文件从而形成安全隐患。

解题

在看到代码后可以发现还有一个hint.php,访问后得到flag在ffffllllaaaagggg文件中

屏幕截图 2024-01-08 153711

经过上面的代码审计之后,我们可以很容易的看到file函数构造的要求。

  1. 不为空
  2. 要是字符串
  3. 通过emmm返回ture
  4. 让include访问ffffllllaaaagggg文件

emmm中

第一部分也是判断

第二部分要求page本身就是source.php或者hint.php

第三部分可以通过问号来截取符合要求的部分,可以利用。

第四部分同理,将第三部分的答案ulr加密后也可以利用。

最后使用/让source.php?或者hint.php?成为不存在的目录,再用…/跳转到ffffllllaaaagggg文件就行。

**tip:正常情况下,URL 的路径部分表示要访问的文件或目录的路径。当 URL 中的路径部分以斜杠 “/” 结尾时,服务器通常会将其解析为目录而不是文件。然而,如果在该斜杠后面紧跟查询参数,如 “source.php?/”,服务器会将其视为一个文件路径,并尝试查找名为 “source.php?” 的文件。然而由于这个目录不存在就会被看成一个不存在的目录。 **

最后得到答案file=hint.php?/…/…/…/…/ffffllllaaaagggg或者source.php?/…/…/…/…/ffffllllaaaagggg。

**tip:…/一定要大于4个,可以多不能少,如果少了无法跳转到flag目录 **

image-20240108155033462

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

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

相关文章

智慧水肥一体化:道品科技现代农业的智能管理模式

智慧水肥一体化是现代农业中一种重要的管理模式&#xff0c;它通过信息技术和物联网技术的结合&#xff0c;实现对水资源和肥料的智能化管理。这一系统的主要功能包括环境监测、集中管理、智能控制、主动报警和数据管理。以下将分别对这些功能进行详细阐述&#xff0c;并探讨智…

UE5.4 PCG 岩石批量复制创建顶部植被

1.复制石头和石头的采点 2.加入想要的植被

卖模版还能赚到钱吗?

说到赚钱&#xff0c;我想大部分人都会感兴趣。但如果告诉大家现阶段卖模板也能赚钱&#xff0c;可能还是有人不信。我要说说我的观察了。 本文可在公众号「德育处主任」免费阅读 我是一只临期程序猿&#xff0c;我最早接触到“模板能卖钱”这个概念是在模板王里。模板王平台上…

怎么样鉴定疾病相关稀有细胞群?二值化精细模型标签,这个刚发的顶刊单细胞算法值得一学!

生信碱移 HiDDEN&#xff1a;抽丝剥茧 在具有病例和对照单细胞RNA测序研究中&#xff0c;样本级标签通常被直接赋予单个细胞&#xff0c;假设所有病例细胞都受影响。这种传统方法在受影响细胞比例较小或扰动强度较弱时&#xff0c;难以有效识别关键细胞及其标记基因&#xff…

第十九周机器学习笔记:GAN的数学理论知识与实际应用的操作

第十九周周报 摘要Abstratc一、机器学习——GAN Basic Theory1. Maximum Likelihood Estimation2. 复习训练GAN的过程3. Objective function与JS散度相关性推导4. GAN的实际做法 总结 摘要 本周周报主要围绕生成对抗网络&#xff08;GAN&#xff09;的基础知识和理论进行深入探…

计算机网络八股文个人总结

1.TCP/IP模型和OSI模型的区别 在计算机网络中&#xff0c;TCP/IP 模型和 OSI 模型是两个重要的网络协议模型。它们帮助我们理解计算机通信的工作原理。以下是它们的主要区别&#xff0c;以通俗易懂的方式进行解释&#xff1a; 1. 模型层数 OSI 模型&#xff1a;有 7 层&#…

Web Workers 学习笔记

最近在开发中遇到了一个需求&#xff0c;一大堆的图片都需要调用两个接口。这对单线程的 JavaScript 运行环境构成了挑战&#xff0c;容易影响用户体验。所以决定学习 Web Workers 并记录一下。 Web Workers 的作用就是提供一个多线程环境&#xff0c;允许将一些繁重任务&…

YOLO11改进|注意力机制篇|引入HAT超分辨率重建模块

目录 一、HAttention注意力机制1.1HAttention注意力介绍1.2HAT核心代码二、添加HAT注意力机制2.1STEP12.2STEP22.3STEP32.4STEP4三、yaml文件与运行3.1yaml文件3.2运行成功截图一、HAttention注意力机制 1.1HAttention注意力介绍 HAT模型 通过结合卷积特征提取与多尺度注意力机…

关于wordpress instagram feed 插件 (现更名为Smash Balloon Social Photo Feed)

插件地址&#xff1a; Smash Balloon Social Photo Feed – Easy Social Feeds Plugin – WordPress 插件 | WordPress.org China 简体中文 安装后&#xff0c;配置教程&#xff1a; Setting up the Instagram Feed Pro WordPress Plugin - Smash Balloon 从这里面开始看就…

ElasticSearch认识

ElasticSearch是什么&#xff1f; Elasticsearch 是一个基于 Apache Lucene 构建的开源分布式搜索引擎和分析引擎。它专为云计算环境设计&#xff0c;提供了一个分布式的、高可用的实时分析和搜索平台。Elasticsearch 可以处理大量数据&#xff0c;并且具备横向扩展能力&#…

在 Google Chrome 上查找并安装 SearchGPT 扩展

ChatGPT 搜索 (SearchGPT)&#xff0c;一个嵌入在流行的 ChatGPT 聊天机器人中的全新搜索引擎&#xff0c;可以改变人们搜索网页的方式。如果你想让它更容易找到并使用它&#xff0c;可以通过安装它的 Chrome 扩展程序。 ChatGPT 搜索是一个快速、精准且无广告的搜索引擎&…

两道算法题

一、算法一 Amazon would like to enforce a password policy that when a user changes their password, the new password cannot be similar to the current one. To determine whether two passwords are similar, they take the new password, choose a set of indices a…

嵌入式硬件电子电路设计(三)电源电路之负电源

引言&#xff1a;在对信号线性度放大要求非常高的应用需要使用双电源运放&#xff0c;比如高精度测量仪器、仪表等;那么就需要给双电源运放提供正负电源。 目录 负电源电路原理 负电源的作用 如何产生负电源 负电源能作功吗&#xff1f; 地的理解 负电压产生电路 BUCK电…

A019基于SpringBoot的校园闲置物品交易系统

&#x1f64a;作者简介&#xff1a;在校研究生&#xff0c;拥有计算机专业的研究生开发团队&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取&#xff0c;记得注明来意哦~&#x1f339; 赠送计算机毕业设计600…

字节青训-小S的倒排索引

问题描述 小S正在帮助她的朋友们建立一个搜索引擎。为了让用户能够更快地找到他们感兴趣的帖子&#xff0c;小S决定使用倒排索引。倒排索引的工作原理是&#xff1a;每个单词都会关联一个帖子ID的列表&#xff0c;这些帖子包含该单词&#xff0c;且ID按从小到大的顺序排列。 例…

2024 CSS - 基础保姆级教程系列一

CSS盒子模型 <style>.box {width: 200px;height: 100px;padding: 20px;} </style> <div class"box">盒子模型 </div><style>.box {width: 200px;height: 100px;padding: 20px;box-sizing: border-box;} </style> <div class&…

道品科技水肥一体化如何确定灌溉需水量呢?

在农业生产进程之中&#xff0c;持续攀升的生产成本&#xff0c;使农民苦不堪言。其一&#xff0c;水肥用量递增&#xff0c;致使成本上扬&#xff1b;其二&#xff0c;种植成效并不显著&#xff0c;所增经济收益颇为有限。另外&#xff0c;不科学的滴灌施肥亦破坏了农业环境架…

北航软件工程考研难度分析!

C哥专业提供——计软考研院校选择分析专业课备考指南规划 总体情况概述 北航软件工程学硕2024届呈现"稳中有降"态势。2024届复试线335分&#xff0c;较2023届上升25分&#xff0c;但较2022届下降10分。实际录取24人&#xff08;含实验室方向&#xff09;&#xff0c…

网页,app,微信小程序互相跳转

1.网页打开小程序 配置&#xff1a;登录小程序账号&#xff0c;找到账号设置&#xff0c;在基本设置中找到隐私与安全 在明文scheme中点击配置&#xff0c;填写要跳转的小程序页面地址即可 此处只展示一种实现方法&#xff0c;其他参照获取 URL Scheme | 微信开放文档 <a …

SQL,力扣题目1767,寻找没有被执行的任务对【递归】

一、力扣链接 LeetCode_1767 二、题目描述 表&#xff1a;Tasks ------------------------- | Column Name | Type | ------------------------- | task_id | int | | subtasks_count | int | ------------------------- task_id 具有唯一值的列。 ta…