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

百度上做网站需要钱吗外贸建立网站怎么做

百度上做网站需要钱吗,外贸建立网站怎么做,如何做自己的加盟网站,ps做网站头部反序列化底层学习 前言 以前也是懒得学,觉得没有必要,学到现在发现好多东西都需要学习java的底层,而且很多漏洞都是通过反序列化底层挖出来的,比如weblogic的一些绕过,我这里也主要是为了学习weblogic来学习的&#…

反序列化底层学习

前言

以前也是懒得学,觉得没有必要,学到现在发现好多东西都需要学习java的底层,而且很多漏洞都是通过反序列化底层挖出来的,比如weblogic的一些绕过,我这里也主要是为了学习weblogic来学习的,所以一些细节不关注

DEMO

import java.io.*;
public class Main {public static class Demo implements Serializable {transient String name;public Demo(String name) {this.name = name;}public static void main(String[] args) throws IOException, ClassNotFoundException {Demo demo = new Demo("nn0nkey");ObjectOutputStream outputStream = new ObjectOutputStream(new FileOutputStream("panda.out"));outputStream.writeObject(demo);outputStream.close();ObjectInputStream inputStream = new ObjectInputStream(new FileInputStream("panda.out"));inputStream.readObject();}}
}

反序列化分析

一般我们就知道反序列化会调用readobject方法,现在就好好分析一下readobject干了啥

首先判断是不是重载类型的,如果不是调用Object obj = readObject0(false);去恢复对象

image-20240625165822881

readObject0方法会对不同的类型进行不同的处理,我这里是object类型的

image-20240625170446323

readOrdinaryObject(unshared)我们继续看看是怎么处理的

内部调用ObjectStreamClass desc = readClassDesc(false);去读取我们的序列化流的描述信息,跟进

可以看到也是按照不同的类型去处理,有null,引用类型,代理类型,class类型

image-20240625170657019

我们进入到class类型

return readNonProxyDesc(unshared);

先进行一个检查是不是class类型,然后实例化一个desc对象,desc的信息是通过readClassDescriptor读取的

image-20240625170852928

跟进readClassDescriptor

image-20240625171409862

跟进readNonProxy

这个方法是真正意义上的操作

系统会先从字节流中读取类名信息name = in.readUTF();,其次从字节流中读取serialVersionUID的信息,然后再从字节流中读取各种SC_*标记信息,通过该标记信息设置对应的成员属性,最后从字节流中读取每一个字段的信息这些字段信息包括:TypeCodefieldNamefieldType

这里对应的方法是在序列化时使用的writeNonProxy方法,在writeNonProxy中写入的TypeCodefieldNamefieldType在这里被读取。

然后回到我们的readNonProxyDesc,封装好我的信息之后使用resolveClass(readDesc)处理为class

image-20240625171853201

resolveClass就是使用class.forname去加载

image-20240625171912221

image-20240625172542804

然后调用initNonProxy处理读取到的信息初始化

最后返回desc对象

image-20240625172627608

回到readOrdinaryObject方法

关键在

image-20240625172436903

做了一个判断desc.isExternalizable,如果序列化的接口是Externalizable类型,就进入readExternalData,否则进入readSerialData

如果我们的demo对象接口类型是Serializable,所以进入了readSerialData方法

readSerialData方法中用了反射进行调用反序列化对象的readObject方法

image-20210811104910320

然后回到readSerialData,会反射调用readResolve方法

image-20210811105200717

20201027155537-cca7961c-1829-1

总结

那么多read方法,我们总结一下

readobject:单纯的入口点

readobject0:可以说是我们的readobject方法的具体逻辑点,会跟进不同的字节流选择不同的方法去处理

readOrdinaryObject:用来处理我们的object对象类型的,它用于调用序列化类中,readObject、readResolve、readExternal的方法会有一些选择

readClassDesc :分发用于处理字节流中TC_CLASSDESC的方法,用switch来选择需要处理的方法

readNonProxyDesc :真正用来处理字节流中的TC_CLASSDESC方法,会调用resolveClass进行创建反序列化的对象

resolveClass:是用Class.forName来创建对象的地方,在这里可以做一个检查校验,用于反序列化拦截。

readNonProxy:真正读取我们描述信息的方法

参考

https://www.cnblogs.com/yyhuni/p/15127416.html

https://www.cnblogs.com/yyhuni/p/15127416.html

eadNonProxy:真正读取我们描述信息的方法

参考

https://www.cnblogs.com/yyhuni/p/15127416.html

https://www.cnblogs.com/yyhuni/p/15127416.html

https://www.cnblogs.com/yyhuni/p/15127416.html

http://www.yayakq.cn/news/741672/

相关文章:

  • 家庭宽带做网站稳定吗php开发企业网站教程
  • 好多网站权重都没了me域名公司网站
  • 电子商务网站建设方案书c2c模式是什么
  • 宜昌外贸网站建设优化推广杭州网站建设方案优化
  • 建设网站规划书品牌建设评价
  • 购物型网站怎么快速被百度收录注册安全工程师有什么用
  • 网站盈利模式分类网站推广费用多少
  • 网站开发的要注意基本原则上海外贸进出口公司
  • seo常用工具网站宁晋网站开发
  • 商务网站建设教学视频seo单页面优化
  • 金牛区建设审批网站腾讯企业邮箱登录入口忘记密码
  • 昆山规建设局网站上海网页设计公司费用
  • 建筑装饰公司做网站的作用如何创建一个自己的博客
  • 宠物网站页面设计理念百度企业查
  • 工业核信息化部网站备案系统广东成都网站建设推广公司
  • 网站建设找c宋南南电商平台介绍
  • 北京响应式网站开发曲靖企业网站
  • 新乡市网站建设电脑培训班哪个网站是用vue做的
  • 网站建设的违约责任东莞网站建设团队全网天下
  • 广西建设厅关公网站转运公司网站制作
  • 电子商务网站的设计要求自己怎么创建微信小程序
  • 深圳公司网站制作企业制作网站 美工
  • 伊利集团网站建设实训wordpress在线表单
  • 网站续费 多久视频剪辑素材免费网站
  • 网站建设需要那些基础国内设计好的网站案例
  • 有什网站可以做设计赚钱做外贸的要有自己的网站吗
  • html5新增标签有哪些济南网络seo公司
  • 注册过域名后怎么建设网站宿州信息网招聘
  • 黔江做网站开发公司合作协议
  • 从化网站开发网站查备案密码