03攻防世界-unserialize3

简介: 03攻防世界-unserialize3

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

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

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


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

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

在ps中执行代码后结果是

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

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


相关文章
|
8天前
|
存储 搜索推荐 UED
攻防世界09cookie
攻防世界09cookie
|
8天前
|
缓存 安全 PHP
攻防世界06-get_post
攻防世界06-get_post
|
8天前
|
数据安全/隐私保护
攻防世界11weak_auth
攻防世界11weak_auth
|
10月前
|
监控 安全 网络安全
Shellcode免杀技术的探索与应对策略
Shellcode免杀技术的探索与应对策略
110 0
|
存储 网络安全 PHP
[CTF/网络安全]攻防世界unserialize3解题详析及php序列化反序列化实例讲解
序列化是指将数据结构或对象转换为可传输或可存储的格式的过程。这通常需要将数据转换为字节流或其他形式的编码格式,以便能够在不同的系统和应用程序之间进行传输或存储。
242 0
|
存储 缓存 安全
【WEB安全】不安全的反序列化
1.1. 什么是序列化和反序列化 序列化和反序列化是指用于将对象或数据结构转换为字节流的过程,以便在不同系统之间进行传输或存储,并在需要时重新构造。 序列化是指将对象或数据结构转换为字节流的过程。 在序列化过程中,对象的状态和数据被转换为一系列字节,这些字节可以按照一定的协议进行传输或存储。序列化通常用于将对象存储到磁盘或通过网络发送到其他系统。序列化后的字节流可以被保存下来,以后
136 0
|
SQL 安全 关系型数据库
【超详细】安全测试===sqlmap使用心得(零)
零、前言 这篇文章是学习Sqlmap的用法时做的笔记,记录了Sqlmap的常见、基础用法。
373 0
A. Petya and Strings
A. Petya and Strings
34 0
|
存储 安全 Java
网络安全-反序列化漏洞简介、攻击与防御
网络安全-反序列化漏洞简介、攻击与防御
236 0
网络安全-反序列化漏洞简介、攻击与防御
Petya and Strings
Petya and Strings
49 0
Petya and Strings