Corba DEMO流量分析

admin 2020年9月13日18:00:50评论202 views字数 1781阅读5分56秒阅读模式

首先Corba DEMO的原文链接,代码后面就不贴了,有兴趣的大佬可以跟着走一遍。
这篇文章的分析,其实是为之后的IIOP反序列化打个基础。

0x00 指导思想

1、启动orbd作为naming service,会创建name service服务。

2、corba server向orbd发送请求获取name service,协商好通信格式。

4、orbd返回保存的name service。

4、corba server拿到name service后将具体的实现类绑定到name service上,这个时候orbd会拿到注册后的信息,这个信息就是IOR。

5、corba client向orbd发起请求获取name service。

6、orbd返回保存的name service。

7、orba client在name service中查找已经注册的信息获取到“引用”的信息(corba server的地址等),通过orb的连接功能将远程方法调用的请求转发到corba server。

8、corba server通过orb接收请求,并利用POA拦截请求,将请求中所指定的类封装好,同样通过orb的连接功能返回给corba client。

摘自:https://cert.360.cn/report/detail?id=d3f6666d6558f02a6204dd51cb749558

0x01 引入概念

ORBA通用对象服务(或称COS名称服务)提供了对象引用的树型目录,就像文件系统提供的文件目录一样。在JDK的早期版本中由tnameserv提供类似服务。tnameserv是暂时名称服务,只有在运行时才能维持名称上下文。如果关闭名称服务,那么所有的名称索引都会消失。J2SE1.4中为了保持和先前版本的通用性仍然保留了tnameserv。

如果使用J2SE1.4之前的tnameserv提供暂时名称服务,上面代码首行返回对暂时名称服务的对象引用。对象引用objRef是个通用CORBA对象,为了要能把它作为NamingContextExt对象使用,必须要将它转换成合适的类型。在CORBA中需使用方法narrow来实现这个转换。另外,如果你在J2SE1.4中使用orbd,那么以上代码返回的就是对永久名称服务的对象引用。如果你想要在orbd中指明使用暂时名称服务,那么就要使用参数TNameService而不是NameService:

摘自:https://blog.csdn.net/freewind88/article/details/19017

0x02 完整数据流程分析

按照简书大佬的代码步骤,把一次完整的对象请求的数据包抓取下来进行分析。

Corba DEMO流量分析

Corba DEMO流量分析

首先看第一个op=get,两个IP地址都为127.0.0.1

服务端初始化,得到NameService信息

Corba DEMO流量分析

执行的代码为:

Corba DEMO流量分析

此行代码返回的是暂时名称服务的对象引用。对象引用objRef是个通用CORBA对象,为了要能把它作为NamingContextExt对象使用,必须要将它转换成合适的类型。在CORBA中需使用方法narrow来实现这个转换。

看序号为2的返回数据包:

Corba DEMO流量分析

返回相应nameservice以及RootPOA信息

看序号为3的数据包执行的代码:

Corba DEMO流量分析

序号为3的数据包:

Corba DEMO流量分析

永久名称服务的对象引用

序号为4的数据包返回永久名称服务的对象引用信息

Corba DEMO流量分析

序号为5的数据包,发送一个需要绑定的对象的名称:

执行的代码为:

Corba DEMO流量分析

序号为5的数据包

Corba DEMO流量分析

nameservice返回序号为6的数据包

Corba DEMO流量分析

序号为7的数据包,绑定一个特定的对象到特定的nameservice特定的名称下:

执行的代码为:

Corba DEMO流量分析

序号为7的数据包:

Corba DEMO流量分析

返回序号为8的数据包:

Corba DEMO流量分析

客户端从序号9到序号12重复的都是服务端获取nameservice,将其转化为永久名称服务引用信息。

唯一不同的就是服务端对nameservice是to_name与rebind,客户端对nameservice是resolver_str与引用对象方法的调用。

这里贴一下客户端的代码:

Corba DEMO流量分析

直接到数据包13,客户端对nameservice的resolver_str

Corba DEMO流量分析

nameservice返回数据包14,其中包括具体的对象引用信息

Corba DEMO流量分析

客户端调用sayHello方法,向服务端发送数据包15

Corba DEMO流量分析

服务端返回具体调用的方法信息,返回数据包16

Corba DEMO流量分析

最后客户端发送shutdown信息,结束方法的调用,关闭与服务端的通信

Corba DEMO流量分析

精彩推荐





Corba DEMO流量分析
Corba DEMO流量分析Corba DEMO流量分析

Corba DEMO流量分析Corba DEMO流量分析Corba DEMO流量分析

Corba DEMO流量分析

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2020年9月13日18:00:50
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Corba DEMO流量分析http://cn-sec.com/archives/131109.html

发表评论

匿名网友 填写信息