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

java反序列化

🎼个人主页:金灰

😎作者简介:一名简单的大一学生;易编橙·终身成长社群的嘉宾.✨

专注网络空间安全服务,期待与您的交流分享~

感谢您的点赞、关注、评论、收藏、是对我最大的认可和支持!❤️

🍊易编橙·终身成长社群🍊 : http://t.csdnimg.cn/iSLaP 期待您的加入~

免责声明:本文仅做分享~

目录

JAVA

java的反序列化

 类要能序列化满足的条件:

反序列化漏洞利用条件:

例:

java反序列化总结:


JAVA

java基础
java是一门编程语言
纯粹的 面向对象类和类的方法
都存放在包,package中java的web基于servlet   --定义路由 ,...

java的反序列化

序列化     类实例->字节流
反序列化   字节流->类实例序列化    writeObject
反序列化  readObject
--自动调用

 类要能序列化满足的条件:

1 实现java.io.Serializeble 接口
2 该类的所有属性必须都是可序列化,如果有一个属性是不可序列化的,那么这个属性必须注明是短暂的.

反序列化漏洞利用条件:

1 有反序列化接口,能够提交序列化的数据,会自动调用对应类的readObject方法.
2 有可以利用的类, readObject通过跳板,最终可以实现文件读取、写入或者执行.

例:

# 类
package com.ctf.entity;public class User implements Serializable {private static final long serialVersionUID = -3254536114659397781L;private String username;public User(String username) {this.username = username;}public String getName(){return this.username;}private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {in.defaultReadObject();Runtime.getRuntime().exec(this.username);}
}//user = (User) objectInputStream.readUnshared();
---------------------------------------------------------------------------+public class BaseUser implements Serializable {private static final long serialVersionUID = -9058183616471264199L;public String secret=null;private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {in.defaultReadObject();Runtime.getRuntime().exec(this.secret);}}user = (User) objectInputStream.readUnshared();当不允许反序列化漏洞的类,可以反序列化子类,也可以反序列化父类.User  BaseUser  readObject 
//反序列化父类
user = (User) safeObjectInputStream.readUnshared();
//强转

java反序列化总结:

1 需要有1个提交反序列化字节流的地方.
2 有可以被利用的类,存在 readObject 方法.
3 类反序列化后,类实例已不再关注,我们重点是执行了readObject方法.

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • C++——异常
  • C++11 lambda表达式与包装器
  • 【Unity】 HTFramework框架(五十五)【进阶篇】只使用资源路径、资源名称加载资源
  • 用script实现的一个简易计算机
  • DevExpress WPF中文教程:如何将GridControl的更改发布到数据库?
  • 删除排序链表中的重复元素 II(LeetCode)
  • 详解基于百炼平台及函数计算快速上线网页AI助手
  • [Python] ai音色翻译器
  • 安全基础学习-keil调试汇编代码
  • Linux 内核源码分析---块设备
  • C# 设计模式之简单工厂模式
  • GoLang 安装
  • 导出easyExcel(前端vue2/后端springboot)
  • Java 面试常见问题之——为什么重写equals时必须重写hashCode方法
  • thinkphp框架远程代码执行
  • es6
  • iOS仿今日头条、壁纸应用、筛选分类、三方微博、颜色填充等源码
  • JavaScript 基本功--面试宝典
  • Java新版本的开发已正式进入轨道,版本号18.3
  • JS学习笔记——闭包
  • LeetCode18.四数之和 JavaScript
  • Linux快速配置 VIM 实现语法高亮 补全 缩进等功能
  • mysql中InnoDB引擎中页的概念
  • React 快速上手 - 07 前端路由 react-router
  • SpiderData 2019年2月25日 DApp数据排行榜
  • Spring Cloud Feign的两种使用姿势
  • 彻底搞懂浏览器Event-loop
  • 复习Javascript专题(四):js中的深浅拷贝
  • 基于Volley网络库实现加载多种网络图片(包括GIF动态图片、圆形图片、普通图片)...
  • 物联网链路协议
  • 译有关态射的一切
  • Oracle Portal 11g Diagnostics using Remote Diagnostic Agent (RDA) [ID 1059805.
  • scrapy中间件源码分析及常用中间件大全
  • 湖北分布式智能数据采集方法有哪些?
  • ​软考-高级-系统架构设计师教程(清华第2版)【第9章 软件可靠性基础知识(P320~344)-思维导图】​
  • #Datawhale AI夏令营第4期#AIGC文生图方向复盘
  • #laravel 通过手动安装依赖PHPExcel#
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (C语言)共用体union的用法举例
  • (function(){})()的分步解析
  • (阿里巴巴 dubbo,有数据库,可执行 )dubbo zookeeper spring demo
  • (第一天)包装对象、作用域、创建对象
  • (二刷)代码随想录第15天|层序遍历 226.翻转二叉树 101.对称二叉树2
  • (附源码)spring boot建达集团公司平台 毕业设计 141538
  • (回溯) LeetCode 40. 组合总和II
  • (论文阅读30/100)Convolutional Pose Machines
  • (每日一问)计算机网络:浏览器输入一个地址到跳出网页这个过程中发生了哪些事情?(废话少说版)
  • (求助)用傲游上csdn博客时标签栏和网址栏一直显示袁萌 的头像
  • (四) Graphivz 颜色选择
  • (转) 深度模型优化性能 调参
  • (转)h264中avc和flv数据的解析
  • .NET8使用VS2022打包Docker镜像
  • .net程序集学习心得
  • .net开源工作流引擎ccflow表单数据返回值Pop分组模式和表格模式对比
  • .net生成的类,跨工程调用显示注释