[HCTF 2018]WarmUp-滑稽

启动场景打开链接,出现一下图片

F12查看代码出现一个注释,应该在这个文件中,

进入到该页面,出现一段代码

<?phphighlight_file(__FILE__);class emmm{public static function checkFile(&$page){$whitelist = ["source"=>"source.php","hint"=>"hint.php"];//定义了一个白名单,只有source.php和hint.php有新的PHP页面if (! isset($page) || !is_string($page)) {//isset就是判断$page是不是NULL,只要不是NULL返回的都是true//is_string就是判断是不是字符串,是的话返回true,但是要注意前面有!,所以是取反//所以只要传入的数据是字符串就不会返回falseecho "you can't see it";return false;}if (in_array($page, $whitelist)) {//in_array()函数搜索数组中是否存在制定的值//这个函数是判断$page是否在白名单$whitelist里面,而我们只能传入source.php或者hint.php,但是我们要获取flag肯定要输入其他字符,所以往下继续看return true;}//在$page?里面匹配第一个问号//例如$page=123?45,$page . '?'=123?45? 返回int(3)$_page=123$_page = mb_substr($page,0,mb_strpos($page . '?', '?'));//这个if语句也是判断$_page是否在白名单内,无法绕过if (in_array($_page, $whitelist)) {return true;}$_page = urldecode($page);$_page = mb_substr(//mb_substr()函数返回字符串的一部分$_page,0,mb_strpos($_page . '?', '?')   //mb_strpos - 查找字符串在另一字符串中首次出现的位置);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'])    //让这个类checkFile返回true) {include $_REQUEST['file'];exit;} else {echo "<img src=\"https://i.loli.net/2018/11/01/5bdb0d93dc794.jpg\" />";}  ?>

这段PHP代码定义了一个名为emmm的类,其中包含一个静态方法checkFile。这个方法的作用是检查请求的文件名是否在一个白名单内,即$whitelist数组中列出的几个文件(如"source.php"、“hint.php”)。如果文件名在列表中或者经过URL解码处理后仍在列表中,方法返回true,表示可以访问该文件;否则返回false,并显示"You can’t see it"的信息。

在主程序部分,它首先检查$_REQUEST['file']变量是否存在、是否为字符串,然后调用emm::checkFile()方法。如果检查通过,就包含并执行指定的文件;如果没有通过检查,则显示一个图片链接。

先构造?file=hint.php

进入到其中出现以下情况

所以flag应该是在ffffllllaaaagggg这个文件里

构造payload:source.php?file=source.php?/../ffffllllaaaagggg,经过mb_strpos为source.php?/../ffffllllaaaagggg?,mb_strpos这个函数只返回首次出现?的位置,而mb_substr截取函数,从0开始截取一直到第一个?的位置,截取内容为source.php,正好可以与白名单中进行匹配,可以返回true

然后执行payload,发现没有显示flag,所以应该不是这个目录,继续加../,直到得到flag

payload:/source.php?file=source.php?/../../../../ffffllllaaaagggg

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

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

相关文章

Web3的技术栈详解:解读区块链、智能合约与分布式存储

随着数字时代的不断发展&#xff0c;Web3作为下一代互联网的核心理念逐渐走进了大众视野。它承载着去中心化、用户主权以及更高效、更安全的网络环境的期望。Web3不再是由少数中心化机构主导的网络&#xff0c;而是通过一系列核心技术的支撑&#xff0c;给每个用户赋予了更多的…

碳金融衍生品:推动绿色金融与减排目标的创新工具

推动绿色金融与减排目标的创新工具 随着全球气候变化问题日益严峻&#xff0c;碳排放交易市场逐渐成为减少温室气体排放的重要手段。为了应对气候变化&#xff0c;越来越多的国家和地区推出了碳交易制度&#xff0c;并推动了碳金融衍生品的诞生。这些衍生品作为碳市场的重要组成…

【优选算法篇】寻找隐藏的宝藏:用二分查找打开算法世界的大门(上篇)

文章目录 须知 &#x1f4ac; 欢迎讨论&#xff1a;如果你在学习过程中有任何问题或想法&#xff0c;欢迎在评论区留言&#xff0c;我们一起交流学习。你的支持是我继续创作的动力&#xff01; &#x1f44d; 点赞、收藏与分享&#xff1a;觉得这篇文章对你有帮助吗&#xff1…

通信综合—8.通信网络安全

一、信息系统安全概述 1.信息系统的构成和分类 信息系统是将用于收集、处理、存储和传播信息的部件组织在一起而成的相关联的整体&#xff0c;般是由计算机硬件、网络和通信设备、计算机软件、信息资源和信息用户组成。它是以处理信息流为目的的人机一体化系统。信息系统主要…

css实现圆周运动效果

在CSS中可以通过 keyframes 动画 和 transform 属性实现元素的圆周运动。以下是一个示例代码&#xff1a; 示例代码 <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport" content…

docker run 设置启动命令

在使用 docker run 命令时&#xff0c;你可以通过指定启动命令来覆盖 Docker 镜像中的默认入口点或命令。具体来说&#xff0c;你可以通过以下两种方式来设置启动命令&#xff1a; 覆盖 CMD&#xff1a; 你可以通过在 docker run 命令的最后部分提供命令来覆盖镜像的默认 CMD 指…

QT QML Text, TextInput, TextFiled, TextArea缩略符号无法显示的问题?无法换行?

经常在使用Text或者其他文字控件时,文字缩略符号无法显示或者文字内容超出控件之外,就是不能换行和显示缩略符?其实,对于控件来说,换行和缩略符最重要的就是要明确控件的宽度,如果控件不给出宽度,文字就不会换行或者缩略显示。但是有一些情况下,我们排版时,不能够明确…

四、自然语言处理_02RNN基础知识笔记

1、RNN的定义 RNN&#xff08;Recurrent Neural Network&#xff0c;循环神经网络&#xff09;是一种专门用于处理序列数据的神经网络架构&#xff0c;它与传统的前馈神经网络&#xff08;Feedforward Neural Network&#xff09;不同&#xff0c;主要区别在于它能够处理输入数…

高性能MySQL-优化服务器设置

优化服务器设置 1、MySQL的配置是如何工作的1.1 MySQL配置文件1.2 语法、作用于和动态性1.3 设置变量的副作用 2、不可取的调整参数方法3、配置内存使用3.1 每个连接的内存需求3.2 为操作系统保留内存3.3 InnoDB缓冲池3.4 线程缓存3.4.1 MySQL线程池相关配置参数3.4.2 MySQL线程…

通过docker 搭建jenkins环境;

一、官网简介使用安装说明: How to use this image docker run -p 8080:8080 -p 50000:50000 jenkins This will store the workspace in /var/jenkins_home. All Jenkins data lives in there - including plugins and configuration. You will probably want to make that …

Ubuntu 22.04.5 + kubeadm:Kubernetes v1.28.2集群部署企业实战

文章目录 Ubuntu 22.04.5 kubeadm&#xff1a;Kubernetes v1.28.2集群部署企业实战一、环境准备1.1 机器规划1.2 环境配置1.2.1 设置主机名1.2.2 安装依赖工具1.2.3 配置时间同步1.2.4 关闭swap分区1.2.5 停止和禁用防火墙1.2.6 配置内核转发及网桥过滤1.2.7 安装配置ipset及i…

【ElasticSearch】倒排索引与ik分词器

ElasticSearch&#xff0c;简称ES(后文将直接使用这一简称)&#xff0c;是一款卓越的开源分布式搜索引擎。其独特之处在于其近乎实时的数据检索能力&#xff0c;为用户提供了迅速、高效的信息查询体验。 它能够解决全文检索&#xff0c;模糊查询、数据分析等问题。那么它的搜索…

uni-app写的微信小程序如何实现账号密码登录后获取token,并且每天的第一次登录后都会直接获取参数而不是耀重新登录(1)

uni-app写的微信小程序如何实现账号密码登录后获取token&#xff08;而token的有效器一般是30分钟&#xff0c;当页面在操作时token是不会过去&#xff0c;&#xff0c;离开页面第二天登录时token就是过期状态&#xff0c;因为记住了账号密码就不会操作再次登录&#xff0c;但是…

SpringCloud框架学习(第七部分:分布式事务Seata)

目录 十五、SpringCloud Alibaba Seata处理分布式事务 1.分布式事务背景 2.Seata简介 &#xff08;1&#xff09;介绍 &#xff08;2&#xff09;工作流程 &#xff08;3&#xff09;各事务模式 &#xff08;4&#xff09;下载安装 3.Seata案例实战-数据库和表准备 …

apache中的Worker 和 Prefork 之间的区别是什么?

文章目录 内存使用稳定性兼容性适用场景 Apache中的Worker和Prefork两种工作模式在内存使用、稳定性以及兼容性等方面存在区别 内存使用 Worker&#xff1a;由于使用线程&#xff0c;内存占用较少。Prefork&#xff1a;每个进程独立运行&#xff0c;内存消耗较大。 稳定性 W…

[C#] 对24位图像进行水平翻转(FlipX)的跨平台SIMD硬件加速向量算法(使用YShuffleX3Kernel)

文章目录 一、标量算法1.1 算法实现1.2 基准测试代码 二、向量算法2.1 算法思路2.1.1 难点说明2.1.2 解决办法&#xff1a;每次处理3个向量2.1.3 用YShuffleX3Kernel对3个向量内的24位像素进行翻转 2.2 算法实现2.3 基准测试代码2.4 使用 YShuffleX3Kernel_Args 来做进一步的优…

python打包深度学习虚拟环境

今天师兄让我把环境打包发给他&#xff0c;我才知道可以直接打包深度学习虚拟环境&#xff0c;这样另一个人就不用辛辛苦苦的去装环境了&#xff0c;我们都知道有些论文他需要的环境很难装上。比如装Apex&#xff0c;装 DCN&#xff0c;mmcv-full 我现在把3090机子上的ppft虚拟…

基于MobileNet深度学习网络的MQAM调制类型识别matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 2.算法运行软件版本 matlab2022a 3.部分核心程序 &#xff08;完整版代码包含详细中文注释和操作步骤视频&#xff09…

Ceph分布式存储集群搭建

一.Ceph分布式存储 (1)Ceph概念:Ceph是一种高性能、可扩展的分布式存储系统&#xff0c;它提供了对象存储、块存储和文件系统存储三种存储接口,Ceph的设计目标是提供无单点故障的、高性能的、可扩展的存储解决方案&#xff0c;同时能够降低存储成本。(2)常用分布式存储方案Lust…

docker及docker exec命令学习笔记

docker exec 是一个常用的 Docker 命令&#xff0c;允许你在已经运行的容器中执行命令或启动新的进程。以下是详细介绍和常见用法&#xff1a; 基本语法 docker exec [OPTIONS] CONTAINER COMMAND [ARG...]参数详解 1. CONTAINER指定目标容器的名字或容器 ID。可以通过以下命…