[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

相关文章:
[HCTF 2018]WarmUp-滑稽
启动场景打开链接,出现一下图片 F12查看代码出现一个注释,应该在这个文件中, 进入到该页面,出现一段代码 <?phphighlight_file(__FILE__);class emmm{public static function checkFile(&$page){$whitelist ["sourc…...
JAVAWeb——maven、SpringBoot、HTTP、Tomcat
目录 1.maven a.概述 b.作用 c.仓库 b.坐标 c.依赖管理 2.SpringBoot 3.HTTP a.概述 b.请求协议 c.响应协议 d.协议解析 4.Tomcat a.Web服务器 b.Tomcat c.SpringBoot与Tomcat关系 1.maven a.概述 Maven是apache旗下的一个开源项目,是一款用于管理…...
【C++】—— set 与 multiset
【C】—— map 与 set 1 序列式容器和关联式容器2 set 系列的使用2.1 set 和 multiset 参考文档2.2 set 类的介绍2.3 set 的迭代器和构造2.4 set的增删查2.4.1 insert2.4.2 find 与 erase2.4.3 count 2.5 lower_bound 与 upper_bound2.6 multiset 与 set 的差异2.6.1 不再去重2…...
蓝桥杯-扫雷
这题不难,就是麻烦一点,这里暴力求解了直接 题目链接: 扫雷 AC代码: import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改public class Main {public static void main(String[] args) {Scanner scan ne…...
黑马JavaWeb-day06、07、08(SQL部分) _
文章目录 MYSQL概述数据模型SQL简介SQL分类 DDL数据库操作表操作 DML增(INSERT)改(UPDATE)删(DELETE) DQL基本查询条件查询(where)分组查询(group by)排序查询…...
三十五:Wireshark的捕获过滤器
Wireshark 是一个广泛使用的网络协议分析工具,主要用于捕获和分析网络流量。它支持丰富的协议分析,并提供了多种过滤方式,以便用户在大量数据中精确地找到自己关注的内容。在Wireshark中,过滤器可以分为两类:捕获过滤器…...
第9章 大模型的有害性(上)
9.1 引言 本章将探讨大型语言模型(LLMs)可能带来的有害性,重点讨论以下几个方面: 性能差异社会偏见和刻板印象 在后续内容中,还会涉及其他层面的危害,如有害信息、虚假信息、隐私和安全风险、版权问题、…...
遗传算法与深度学习实战(26)——编码卷积神经网络架构
遗传算法与深度学习实战(26)——编码卷积神经网络架构 0. 前言1. EvoCNN 原理1.1 工作原理1.2 基因编码 2. 编码卷积神经网络架构小结系列链接 0. 前言 我们已经学习了如何构建卷积神经网络 (Convolutional Neural Network, CNN),在本节中&a…...
Linux无线网络配置工具:iwconfig vs iw
在Linux系统中,无线网络配置和管理是网络管理员和开发者的常见任务。本文将详细介绍两个常用的无线网络配置命令行工具:iwconfig 和 iw,并对比它们之间的区别,帮助您更好地选择合适的工具进行无线网络配置。 一、iwconfig 简介 …...
RabbitMQ介绍及安装
文章目录 一. MQ二. RabbitMQ三. RabbitMQ作用四. MQ产品对比五. 安装RabbitMQ1. 安装erlang2. 安装rabbitMQ3. 安装RabbitMQ管理界⾯4. 启动服务5. 访问界面6. 添加管理员用户7. 重新登录 一. MQ MQ( Message queue ), 从字⾯意思上看, 本质是个队列, FIFO 先⼊先出ÿ…...
借助 AI 工具,共享旅游-卡-项目助力年底增收攻略
年底了,大量的商家都在开始筹备搞活动,接下来的双十二、元旦、春节、开门红、寒假,各种活动,目的就是为了拉动新客户。 距离过年还有56 天,如何破局? 1、销售渠道 针对旅游卡项目,主要销售渠道…...
Docker Compose 和 Kubernetes 之间的区别?
一、简介🎀 1.1 Docker Compose Docker Compose 是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排,可以管理多个 Docker 容器组成一个应用。你只需定义一个 YAML 格式的配置文件 docker-compose.yml ,即可创建并…...
node.js常用的模块和中间件?
Node.js常用的模块和中间件包括以下几种: Express:Express是一个灵活的Node.js web应用框架,提供了丰富的API来处理HTTP请求和响应。它支持中间件系统,可以轻松地添加各种功能,如路由、模板引擎、静态文件服务…...
Llama模型分布式训练(微调)
1 常见大模型 1.1 参数量对照表 模型参数量发布时间训练的显存需求VGG-19143.68M2014~5 GB(单 224x224 图像,batch_size32)ResNet-15260.19M2015~7 GB(单 224x224 图像,batch_size32)GPT-2 117M117M2019~…...
Matlab模块From Workspace使用数据类型说明
Matlab原文连接:Load Data Using the From Workspace Block 模型: 从信号来源的数据: timeseries 数据: sampleTime 0.01; numSteps 1001;time sampleTime*[0:(numSteps-1)]; time time;data sin(2*pi/3*time);simin time…...
LangChain学习笔记(一)-LangChain简介
LangChain学习笔记(一)-LangChain简介 langChain是一个人工智能大语言模型的开发框架,主要构成为下图。 一、核心模块 (一)模型I/O模块 负责与现有大模型进行交互,由三部分组成: 提…...
k8s,声明式API对象理解
命令式API 比如: 先kubectl create,再replace的操作,我们称为命令式配置文件操作 kubectl replace的执行过程,是使用新的YAML文件中的API对象,替换原有的API对象;而kubectl apply,则是执行了一…...
KubeBlocks v0.9.2发布啦!支持容器镜像滚动更新、MySQL支持Jemalloc...快来升级体验更多新功能!
KubeBlocks v0.9.2 正式发布啦!本次发布包含了一些新功能、关键的错误修复以及各种改进。以下是详细的更新内容。 升级文档 v0.9.2 升级方式与 v0.9.1 相同,替换版本即可哦~ https://kubeblocks.io/docs/release-0.9/user_docs/upgrade/up…...
Linux-虚拟环境
文章目录 一. 虚拟机二. 虚拟化软件三. VMware WorkStation四. 安装CentOS操作系统五. 在VMware中导入CentOS虚拟机六. 远程连接Linux系统1. Finalshell安装2. 虚拟机网络配置3. 连接到Linux系统 七. 虚拟机快照 一. 虚拟机 借助虚拟化技术,我们可以在系统中&#…...
window系统下的git怎么在黑窗口配置代理
在Windows系统下,通过黑窗口(命令行界面)配置Git代理主要有两种方式:配置HTTP代理和配置SOCKS5代理。以下是具体的步骤: 配置HTTP代理 临时代理设置(仅对当前命令行会话有效): set …...
磁性轴承尺寸如何精准检测?蓝光扫描仪全尺寸3D检测解析
磁悬浮轴承是一种高性能轴承,它利用可控磁力将旋转的转子无接触地悬浮于空间中。作为核心支撑部件,磁性轴承对于定子内圆与转子外圆的同轴度、部件的形位公差提出了极高要求。对于磁性轴承3D尺寸检测,蓝光三维扫描仪凭借其非接触、高精度、高…...
GF6-WFV数据FLAASH大气校正避坑全记录:参数设置、光谱响应函数选择与结果验证
GF6-WFV数据FLAASH大气校正实战指南:从参数优化到结果验证 当处理国产高分六号卫星WFV相机数据时,大气校正环节往往是整个流程中的关键瓶颈。不同于常规Landsat或Sentinel数据,GF6-WFV特有的波段设置和响应特性使得FLAASH参数配置充满陷阱。本…...
nvm-desktop技术深度解析:跨平台Node.js版本管理架构设计
nvm-desktop技术深度解析:跨平台Node.js版本管理架构设计 【免费下载链接】nvm-desktop Node Version Manager Desktop - A desktop application to manage multiple active node.js versions. 项目地址: https://gitcode.com/gh_mirrors/nv/nvm-desktop nvm…...
终极Pandoc文档转换指南:5分钟掌握40+格式互转神器
终极Pandoc文档转换指南:5分钟掌握40格式互转神器 【免费下载链接】pandoc Universal markup converter 项目地址: https://gitcode.com/gh_mirrors/pa/pandoc 还在为不同文档格式之间的转换而烦恼吗?学术论文需要LaTeX排版,技术文档要…...
AI时代管理者必备的10项核心能力地图
1. 项目概述:这不是一份“领导力清单”,而是一张AI时代管理者的生存地图“10 Essential Skills for AI Leaders”——看到这个标题,很多人第一反应是点开、收藏、转发到“管理者必读”群,然后继续用Excel做季度复盘、用PPT讲战略愿…...
AI工程实践简报:如何用高质量信号提升技术决策效率
1. 项目概述:一份真正“够用”的AI资讯简报,到底长什么样?“This AI newsletter is all you need #38”——光看标题,你可能以为这又是一份泛泛而谈的行业 roundup,或是堆砌热点、浮于表面的“信息快餐”。但作为连续三…...
技术人的英语能力如何影响薪资?数据说话
打开任何一个招聘平台,搜索“软件测试工程师”,你会发现一个越来越普遍的现象。对于那些薪资范围宽、技术描述详尽、公司名号响亮的岗位,末尾往往会附上一句:“英语可作为工作语言”、“英文读写能力优异”、“CET-6以上优先”。这…...
基于RL78/G13的电位器ADC采集与串口通信上位机显示系统设计
1. 项目概述与核心思路最近在整理工作室的旧零件,翻出来一块瑞萨电子的RL78/G13开发板,还有几个吃灰的电位器。想着不能浪费,就琢磨着做个简单但能体现MCU基本功的小项目:用这块开发板实时采集电位器的电压,并把数据上…...
MSP430在便携式医疗设备中的超低功耗设计与血氧心率监测实现
1. 项目概述:为什么是MSP430?在便携式医疗设备这个赛道上,选型往往是决定项目成败的第一步。当你面对血糖仪、血氧仪这类需要用户随身携带、频繁使用、且对测量精度和电池寿命有严苛要求的产品时,一颗合适的微控制器(M…...
第36天:关系型数据库和MySQL概述
Python学习100天(从入门到精通系列文章) 文章目录 Python学习100天(从入门到精通系列文章) 前言 一、关系型数据库概述 1.1 数据持久化 1.2 数据库发展史 1.3 关系数据库特点 1.4 ER模型(实体关系模型) 1.5 主流关系数据库产品 二、MySQL 简介 三、安装 MySQL 3.1 Window…...
