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

03攻防世界-unserialize3

根据题目可以看出,这是个反序列化的题目

打开网址观察题目可以看到这里是php的代码,那么也就是php的反序列化

image-20240307150254059

本题需要利用反序列化字符串来进行解题,根据源码提示我们需要构造code。 序列化的意思是:是将变量转换为可保存或传输的字符串的过程。

反序列化就是将字符串在转化回变量。这种方式能轻松的存储和传输数据,但反序列化有一个漏洞,通过这个漏洞我们可以跳过反序列化操作的执行。这样就不会执行后面的exit函数。 但是原代码中并没有序列化所以我们无法进行反序列化,所以我们需要添加一个序列化来将我们的变量变成字符串。在php中序列化和反序列化函数分别为serialize,__wakeup。下面就要将代码补充完整(即添加序列化)

<?php
class xctf{                     //定义一个名为xctf的类public $flag = '111';         //定义一个公有的类属性public function __wakeup(){   //定义一个公有的类方法__wakeup(),用于输出badexit('bad requests');          //退出当前脚本}
}
$a= new xctf();          //使用new运算符来实例化该类(xctf)的对象 a
print(serialize($a));     //输出被序列化的对象
?>

在ps中执行代码后结果是

但是输入这个的时候,我们发现

image-20240307151602870

对于这个字符串我们可以看到它有一个变量值("xctf":后面的1)。而对于反序列化来说如果字符串中的变量的数目和真实的数目不一样那么__wakeup会出现错误,我们就造成了反序列化漏洞,所以我们在填写字符串时将变量值的数目从1改成2,输入网页网址后即可获得flag。改成3或者4都是可以的。

http://www.lryc.cn/news/338218.html

相关文章:

  • 蓝桥杯备考随手记: 常见的二维数组问题
  • Java | Leetcode Java题解之第28题找出字符串中第一个匹配项的下标
  • 【数据结构与算法】:二叉树经典OJ
  • uniapp——长按识别二维码
  • 云服务器环境web环境搭建之JDK、redis、mysql
  • 第1章 计算机网络体系结构
  • Docker之自定义镜像上传至阿里云
  • 《深入Linux内核架构》第2章 进程管理和调度 (2)
  • (四)PostgreSQL的psql命令
  • 前端使用minio传输文件
  • [大模型] BlueLM-7B-Chat WebDemo 部署
  • 一文了解ERC404协议
  • iOS cocoapods pod FrozenError and RuntimeError
  • 【鸿蒙开发】第二十章 Camera相机服务
  • JS阅读笔记
  • 基于spring boot的留守儿童爱心管理系统
  • python输入某年某月某日判断这一天是这一年的第几天
  • docker 上达梦导入dump文件报错:本地编码:PG GBK,导入女件编码:PGGB18030
  • 一起学习python——基础篇(19)
  • 数模 初见数建
  • windows系统搭建OCR半自动标注工具PaddleOCR
  • 01、ArcGIS For JavaScript 4.29对3DTiles数据的支持
  • Spark_SparkSql写入Oracle_Undefined function.....将长字符串写入Oracle中方法..
  • 2023数据要素白皮书(免费下载)
  • kafka学习记录
  • 无线网络2.4和5G的区别
  • 大模型笔记:Prompt tuning
  • 【Ambari】Ansible自动化部署大数据集群
  • RTSP/Onvif视频安防监控平台EasyNVR调用接口返回匿名用户名和密码的原因排查
  • opencv基础图行展示