首页 > 其他分享 >5.17反序列化

5.17反序列化

时间:2024-06-01 19:43:27浏览次数:15  
标签:__ 3436932 对象 5.17 字符串 序列化 数据

1、原理

序列化:对象状态-可存储或传输形式的过程,将状态信息保存为字符串;
反序列化:序列化的字符串-对象;

恶意代码注入到应用程序中,程序从不安全来源反序列化数据时,数据从一种格式(json、xml)转化为(对象或列表),如果不检查安全性,则攻击者构造恶意代码在数据,程序反序列化时,恶意代码执行(RCE远程代码执行);

2、魔法函数

魔法函数 调用的时机
__construct() 初始化类的时候,一般对于变量进行赋值
__destruct() 和构造函数相反,在对象不再被使用时(将所有该对象的引用设为null)或者程序退出时自动调用
__toString() 当一个对象被当作一个字符串被调用,把类当作字符串使用时触发,返回值需要为字符串
__wakeup() 使用unserialize时触发,反序列化恢复对象之前调用该方法
__sleep() 使用serialize时触发.该函数需要返回以类成员变量名作为元素的数组(该数组里的元素会影响类成员变量是否被序列化。只有出现在该数组元素里的类成员变量才会被序列化
__destruct() 对象被销毁时触发
__invoke() 当脚本尝试将对象调用为函数时触发

3、防御

  • 避免使用不知源外部数据序列化
  • 输入序列化字符串验证
  • 白名单

4、php反序列化

serialize()  对象转化字符串
unserialize()  字符串转化对象
![](/i/l/?n=24&i=blog/3436932/202406/3436932-20240601194046443-2131759018.png)
思路:字符串转对象,复制对象中的数据,在编译;

### 5、JAVA反序列化
![](/i/l/?n=24&i=blog/3436932/202406/3436932-20240601194059508-261672854.png)
![](/i/l/?n=24&i=blog/3436932/202406/3436932-20240601194108166-929234882.png)
xiaodi-->txt乱码  **序列化** wirteobject
txt乱码数据-->xiaodi  **反序列化** readobject

==序列化标志参考:数据以rO0AB开头,基本为java序列化之后base64编码后数据;aced开头,即为java序列化16进制数据;==

### 6、payload

反弹shell解决无回显问题;

	ipconfig= >序列化->base64=rO0AB格式字符串 最终payload

ysoserial工具生成payload;

登录用户返回数据包:"data":"rO0ABddsadahudqwhoodwhwdnssabndabnbnsabmdnakjqowhoi"
,解密先用base64解码之后用==SerializationDumper解析数据==

**查看当前用户信息:**
**请求数据包:rO0ABddsadahudqwhoodwhwdnssabndabnbnsabmdnakjqowhoi**
**返回是ctfhub**

**发现思路**:登录回显数据包时,数据为序列化结果数据,而查看用户信息时,将序列化数据输出回显了正常数据,构成了序列化和**反序列化**(关键);

标签:__,3436932,对象,5.17,字符串,序列化,数据
From: https://www.cnblogs.com/lusang/p/18226308

相关文章

  • Jackson序列化为字符串时对指定字段脱敏
    枚举脱敏字段类型及规则importjava.util.function.Function;publicenumTextMaskStrategy{ID_NO("身份证",18,text->"*".repeat(text.length()-4)+text.substring(text.length()-4)),PHONE("手机号",11,text->text.substr......
  • (附nuclei yaml文件)泛微E-office 10 atuh-filephar反序列化命令执行漏洞复现(QVD-2024-1
    (附nucleiyaml文件)泛微E-office10atuh-filephar反序列化命令执行漏洞复现(QVD-2024-11354)声明本文仅用于技术交流,请勿用于非法用途由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。1、漏洞简介泛......
  • Newtonsoft.Json 序列化器的重写
    //TGD_AUDIT_STATUS、TGD_DEPT_ID都是Int32?的数据类型,如果他们的值包含小数点时直接反序列化会报错的,异常是:字符串的格式不正确,所以此时可以进行客户自定义反序列化的规则设定,这样就问题解决了。自定义实现类中,反序列化时调用ReadJson方法,序列化时调用WriteJson方法。stringj......
  • 序列化与反序列化(GO)
    GO序列化与反序列化定义序列化:把对象转化为可传输的字节序列的过程称为序列化反序列化:把字节序列还原为对象的过程称为反序列化。--作为开发者,序列化和反序列化一直是我们老生常谈的问题,也是非常琐碎但是重要的知识点。对于序列化与反序列化,我这里强烈推荐一篇博客,你可以从中......
  • .NET8序列化与反序列化
    序列化与反序列化JSON简介JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式,采用类的形式来描述数据之间的关联关系。JSON是一个序列化的对象或数组。JSON中仅有六个构造字符([、]、{、}、:、,),以及无意义的空白符(换行、空间等)JSON中的数据类型:对象(使用{})、数组(使用[])、......
  • Weblogic T3协议反序列化漏洞[CVE-2018-2628]
    漏洞复现环境搭建请参考http://t.csdnimg.cn/TYtKgkali切换jdk版本请参考Kali安装JAVA8和切换JDK版本的详细过程_kali安装jdk8-CSDN博客漏洞原理T3协议实现Weblogicserver和其他java程序间的数据传输,Weblogic开放7001端口则默认开启T3服务,通过构造恶意的T3协议数据,利用......
  • C# xml文档反序列化记事
    可以使用XmlSerializer直接序列化和反序列化xml反序列化如以下代码privateT?XmlDeseriallize<T>(stringfilePath){XmlSerializerserializer=newXmlSerializer(typeof(T));using(FileStreamfileStream=newFileStream(f......
  • 关于对于Java中Entity以及VO,以及DTO中Request对象序列化的学习
    关于Serializable的探讨前提引入是由于软件测试上有同学提到说,什么该字段在程序刚运行时,导致jvm激增,所以吸引了我的注意回顾代码MybatisPlusGenerator自动生成的entity中就经常带有这个,而且我在开发代码的时候VO,以及DTO常常是直接复制对应的entity,所以也保不齐我对应......
  • @JsonFormat注解出现日期序列化以及反序列化问题(日期比实际日期少一天)
    文章目录前言一、场景如下所示二、问题分析三、@JsonFormat注解是什么以下是@JsonFormat注解的一些常用属性:四、解决问题解决方式:只需要指定对应的时区就好效果如下:五、@JsonFormat注解时出现日期问题总结前言  在一次的偶然机会下发现了一个小问题,场景是这......
  • Golang 序列化与反序列化,包含字段首字母小写和字段时间格式化
     golang结构体json的时间 序列化与反序列化 格式化解决方案 //最近开发项目时候发现一个结构体的Json转换的时间格式问题。//即这种1993-01-01T20:08:23.000000028+08:00这种表示UTC方法。//从我们习惯来说,更喜欢希望的是1993-01-0120:08:23这种格式如......