当前位置: 首页 > news >正文

buuctf[HCTF 2018]WarmUp 1

题目环境:
在这里插入图片描述

发现除了表情包,再无其他
F12试试
image.png
发现source.php文件
访问这个文件,格式如下:
url/source.php
回显如下:
image.png
PHP代码审计:

<?php
highlight_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的类,该类有一个静态方法checkFile。checkFile方法接受一个字符串参数$page,这个参数可能代表一个文件名。
  2. 定义了一个$whitelist数组,这个数组里面存在两个元素是"source.php"和"hint.php"。
  3. checkFile方法首先检查$page是否存在且为字符串。如果不满足这些条件,它将输出"you can’t see it"并返回false。
  4. 然后,checkFile方法检查 p a g e 是否存在于一个名为 page是否存在于一个名为 page是否存在于一个名为whitelist的数组中。这个数组包含两个元素,分别是"source.php"和"hint.php"。如果 p a g e 在 page在 pagewhitelist中,方法将返回true。
  5. 如果 p a g e 不在 page不在 page不在whitelist中,那么checkFile方法将尝试通过以下步骤查找匹配的文件名:
    • 首先,它将 p a g e 和问号 ( ? ) 连接起来,然后查找这个字符串在 page和问号(?)连接起来,然后查找这个字符串在 page和问号(?)连接起来,然后查找这个字符串在page中的位置。这可能是为了检查是否存在一个查询字符串。
    • 然后,它对$page进行url解码,再重复之前的步骤。
    • 如果以上两种方式都未能找到匹配的文件名,那么方法将输出"you can’t see it"并返回false。
  6. 在类的定义之外,这段代码检查了一个名为 R E Q U E S T [ ′ f i l e ′ ] 的变量。如果这个变量非空且为字符串,并且通过 e m m m : : c h e c k F i l e ( _REQUEST['file']的变量。如果这个变量非空且为字符串,并且通过emmm::checkFile( REQUEST[file]的变量。如果这个变量非空且为字符串,并且通过emmm::checkFile(_REQUEST[‘file’])检查,那么它将包含(include)这个文件并退出。否则,它将显示最初页面的那个滑稽表情包图片。
  7. 总的来说,给了我们一个参数是file,我们给file参数传值就等于是给page参数传值,传的值需要提前用英文问号(?)连接起来,然后我们就可以找flag,怎么找flag是个问题,但是在代码里面还有一个名为hint.php的文件,不妨去看看,或许有咱们需要的信息。

查看hint.php内容
查看格式:
url/hint.php
回显结果:
image.png
这里说flag在ffffllllaaaagggg文件里面
有了目标就好办了,构造下payload:
url/source.php?file=hint.php?/ffffllllaaaagggg
image.png
竟然什么都没有显示
分析一下原因:

  1. 首先我们的payload要在source.php文件下进行,因为参数在这里面。
  2. flag在ffffllllaaaagggg里面,ffffllllaaaagggg又在hint.php里面,并且$whitelist数组里面也存在hint.php文件,所以说要先进到hint.php文件里面。
  3. 英文问号(?)连接后面的字符串也没有问题
  4. 到这里payload构造是没有问题的,那么问题就出在了找flag的位置不对!
  5. 我们这个payload是在hint.php文件里面找的,但是没有,返回上一级找找看?问题是也不知道flag具体在哪一级,那就构造多一些,溢出的部分没关系,这里只会显示最后一个目录。
  6. 了解一下:

1、“.”表示当前目录,也可以用“./”表示。

2、“…”表示上一级目录,也可以用“…/”表示。
3、“~” 代表用户自己的宿主目录。
4、“/”处于Linux文件系统树形结构的最顶端,我们称它为Linux文件系统的root,它是Linux文件系统的入口。

继续构造payload:
url/source.php?file=hint.php?../../../../../../ffffllllaaaagggg
这里就是说一直返回上一级查找,直到查找到flag为止,最终返回到/root根目录,因为ffffllllaaaagggg原本是在hint.php文件里面嘛,所以说要一直往上一级目录找它的原始位置,
…/倒不是一定是6个,看你的flag具体在那个上一级目录了😉
上传payload
回显结果:
image.png
爆出flag:
flag{89c3539b-c6f4-4454-892a-ff1e460a560b}

相关文章:

buuctf[HCTF 2018]WarmUp 1

题目环境&#xff1a; 发现除了表情包&#xff0c;再无其他F12试试发现source.php文件访问这个文件&#xff0c;格式如下&#xff1a;url/source.php回显如下&#xff1a;PHP代码审计&#xff1a; <?php highlight_file(__FILE__); class emmm {public static function ch…...

开源博客项目Blog .NET Core源码学习(4:生成验证码)

开源博客项目Blog中的后台管理登录界面中支持输入验证码&#xff08;如下图所示&#xff09;&#xff0c;本文学习并记录项目中验证码的生成及调用方式。   博客项目中调用VerifyCode类生成验证码&#xff0c;该类位于App.Framwork项目中&#xff0c;命名空间为App.Framwork…...

gin框架39--重构 BasicAuth 中间件

gin框架39--重构 BasicAuth 中间件 介绍gin BasicAuth 解析自定义newAuth实现基础认证注意事项说明 介绍 每当我们打开一个网址的时候&#xff0c;会自动弹出一个认证界面&#xff0c;要求我们输入用户名和密码&#xff0c;这种BasicAuth是最基础、最常见的认证方式&#xff0…...

编译pycaffe过程中遇到的问题及解决

pycaffe是python调用caffe的方式&#xff0c;编译它就是要得到一个so库_pycaffe.so。 如题&#xff0c;在caffe的源码目录下&#xff0c;执行make pycaffe&#xff0c;跳出来一个错误: $ make pycaffe CXX/LD -o python/caffe/_caffe.so python/caffe/_caffe.cpp /usr/bin/ld…...

自然语言处理---Transformer机制详解之Transformer优势

1 Transformer的并行计算 对于Transformer比传统序列模型RNN/LSTM具备优势的第一大原因就是强大的并行计算能力. 对于RNN来说&#xff0c;任意时刻t的输入是时刻t的输入x(t)和上一时刻的隐藏层输出h(t-1)&#xff0c;经过运算后得到当前时刻隐藏层的输出h(t)&#xff0c;这个…...

改进YOLO系列 | YOLOv5/v7 引入 Dynamic Snake Convolution | 动态蛇形卷积

准确分割拓扑管状结构,如血管和道路,在各个领域中至关重要,可以确保下游任务的准确性和效率。然而,许多因素使任务复杂化,包括细小的局部结构和可变的全局形态。在这项工作中,我们注意到管状结构的特殊性,并利用这一知识来引导我们的DSCNet,以在三个阶段同时增强感知:…...

postgresql14-表的管理(四)

表table 创建表 CREATE TABLE table_name --表名 (column_name data_type column_constraint, --字段名、字段类型、约束字段&#xff08;可选&#xff09;column_name data_type, --表级别约束字段...,table_constraint );CREATE TABLE emp1 --创建表 AS SELECT * FROM empl…...

Java--Object类

Java中Object类是所有类的父类&#xff0c;是Java中最高层的类。用户创建一个类时&#xff0c;除非指定继承了某个类&#xff0c;否则都是继承于Object类。 由于所有类都继承于Object类&#xff0c;所以所有类都可以重写Object类中的方法。但是Object类中被final修饰的getClass…...

交换机端口灯常亮 端口up状态 服务器设置ip交换机获取不到服务器网卡mac地址 不能通信

环境: 深信服防火墙 8.0.75 AF-2000-FH2130B-SC S6520X-24ST-SI交换机 version 7.1.070, Release 6530P02 问题描述: 交换机一个vlan下有3台服务器,连接端口2、3、4,2和3连接的服务器正常,交换机3端口灯常亮 端口up状态 服务器自动获取不了地址,改为手动设置ip后,交…...

Linux笔记之diff和vimdiff

Linux笔记之diff和vimdiff code review! 文章目录 Linux笔记之diff和vimdiff一.diff1.1.使用diff比较文件夹1.2.使用diff比较文件1.4.colordiff——带颜色输出差异 二.vimdiff2.1.vimdiff颜色差异2.2.vimfiff调整栏宽2.3.修改颜色变谈&#xff0c;使代码可以看清楚2.4.vimdif…...

目标检测YOLO实战应用案例100讲-基于改进的YOLOV5算法的垃圾分类模型

目录 前言 国内外研究现状 目标检测算法发展现状 YOLO算法的发展现状...

我做不到受每个人喜欢

我做不到受每个人喜欢 我想描述一下昨天发生争吵后我个人的观点&#xff0c;希望能够重新呈现出一种积极的态度。 首先&#xff0c;让我简要梳理一下事件的经过&#xff0c;当天我像往常一样去另一个宿舍找人聊天&#xff0c;可能因为说话声音有点大&#xff0c;坐在我后面的那…...

Linux笔记之diff工具软件P4merge的使用

Linux笔记之diff工具软件P4merge的使用 code review! 文章目录 Linux笔记之diff工具软件P4merge的使用1.安装和配置2.使用&#xff1a;p4merge a.cc b.cc3.配置git 参考博文: Ubuntu Git可视化比较工具 P4Merge 的安装/配置及使用 1.安装和配置 $ wget https://cdist2.per…...

使用 OpenSSL 扩展来实现公钥和私钥加密

首先&#xff0c;你需要生成一对公钥和私钥。可以使用 OpenSSL 工具来生成&#xff1a; 1、生成私钥 openssl genpkey -algorithm RSA -out private_key.pem 2、从私钥生成公钥&#xff1a; openssl rsa -pubout -in private_key.pem -out public_key.pem现在你有了一个私钥…...

二、安全与风险管理—安全与风险管理基础

目录 目录 1.什么是信息与信息的生命周期 2.信息安全的基本目标 3.风险管理与控制类型...

rust学习——栈、堆、所有权

文章目录 栈、堆、所有权栈(Stack)与堆(Heap)栈堆性能区别所有权与堆栈 所有权原则变量作用域所有权与函数返回值与作用域 栈、堆、所有权 栈(Stack)与堆(Heap) 栈和堆是编程语言最核心的数据结构&#xff0c;但是在很多语言中&#xff0c;你并不需要深入了解栈与堆。 但对于…...

如何从小白成长为AI工程师笔记

&#x1f4da;入门机器学习基础 对于本科生来说&#xff0c;需要打好数学基础&#xff0c;包括高数、概率论和线性代数。 对于已经上研究生或工作想转行的人来说&#xff0c;可以直接开始学习机器学习算法&#xff0c;重要的是理解算法的原理和推导过程。如果有时间和需要&am…...

fail-fast 和 fail-safe 迭代器

fail-fast 和 fail-safe 迭代器是两种不同的迭代器设计策略&#xff0c;用于在遍历集合&#xff08;如 ArrayList、HashMap&#xff09;时处理并发修改的情况。它们的行为和应对策略有所不同&#xff1a; Fail-Fast 迭代器&#xff1a; Fail-Fast 迭代器在遍历集合期间&#x…...

Nvidia显卡基础概念介绍

一、PCIe与SXM 1.1 Nvidia GPU PCIe PCIe(peripheral component interconnect express)是一种高速串行计算机扩展总线标准&#xff0c;是英特尔公司在2001年提出来的&#xff0c;它的出现主要是为了取代AGP接口&#xff0c;优点就是兼容性比较好&#xff0c;数据传输速率高、…...

使用screen实现服务器代码一直运行

1.安装screen sudo apt install screen 2.创建一个screen&#xff08;创建一个名为chatglm的新的链接&#xff0c;用来一直运行 screen -S chatglm 3.查看进程列表 screen -ls 创建之后&#xff0c;就可以在当前窗口利用cd命令进入要执行的项目中&#xff0c;开始执行&#xf…...

KubeSphere 容器平台高可用:环境搭建与可视化操作指南

Linux_k8s篇 欢迎来到Linux的世界&#xff0c;看笔记好好学多敲多打&#xff0c;每个人都是大神&#xff01; 题目&#xff1a;KubeSphere 容器平台高可用&#xff1a;环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

基于算法竞赛的c++编程(28)结构体的进阶应用

结构体的嵌套与复杂数据组织 在C中&#xff0c;结构体可以嵌套使用&#xff0c;形成更复杂的数据结构。例如&#xff0c;可以通过嵌套结构体描述多层级数据关系&#xff1a; struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...

工业安全零事故的智能守护者:一体化AI智能安防平台

前言&#xff1a; 通过AI视觉技术&#xff0c;为船厂提供全面的安全监控解决方案&#xff0c;涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面&#xff0c;能够实现对应负责人反馈机制&#xff0c;并最终实现数据的统计报表。提升船厂…...

HTML 列表、表格、表单

1 列表标签 作用&#xff1a;布局内容排列整齐的区域 列表分类&#xff1a;无序列表、有序列表、定义列表。 例如&#xff1a; 1.1 无序列表 标签&#xff1a;ul 嵌套 li&#xff0c;ul是无序列表&#xff0c;li是列表条目。 注意事项&#xff1a; ul 标签里面只能包裹 li…...

Java多线程实现之Callable接口深度解析

Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...

页面渲染流程与性能优化

页面渲染流程与性能优化详解&#xff08;完整版&#xff09; 一、现代浏览器渲染流程&#xff08;详细说明&#xff09; 1. 构建DOM树 浏览器接收到HTML文档后&#xff0c;会逐步解析并构建DOM&#xff08;Document Object Model&#xff09;树。具体过程如下&#xff1a; (…...

Psychopy音频的使用

Psychopy音频的使用 本文主要解决以下问题&#xff1a; 指定音频引擎与设备&#xff1b;播放音频文件 本文所使用的环境&#xff1a; Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)

宇树机器人多姿态起立控制强化学习框架论文解析 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架&#xff08;一&#xff09; 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...

【Linux系统】Linux环境变量:系统配置的隐形指挥官

。# Linux系列 文章目录 前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变量的生命周期 四、环境变量的组织方式五、C语言对环境变量的操作5.1 设置环境变量&#xff1a;setenv5.2 删除环境变量:unsetenv5.3 遍历所有环境…...

离线语音识别方案分析

随着人工智能技术的不断发展&#xff0c;语音识别技术也得到了广泛的应用&#xff0c;从智能家居到车载系统&#xff0c;语音识别正在改变我们与设备的交互方式。尤其是离线语音识别&#xff0c;由于其在没有网络连接的情况下仍然能提供稳定、准确的语音处理能力&#xff0c;广…...