ORACLE数据库-TNS协议分析详解 联系客服

发布时间 : 星期六 文章ORACLE数据库-TNS协议分析详解更新完毕开始阅读

2.8.22 0x08 0x01

经分析发现验证密钥、查询表的结构、0x033b、0x0302命令返回结果用命令0x0801,不过其格式非常不规则,很难分析。

2.8.23 0x08 0x05

当用户查询请求时,有时返回结果之后会出现这个命令,具体怎么使用还不是很清楚。

Magic1 Value Num Data Format Data Format …

Data Format

23 2 …

返回列数 数据 数据 … 数据

2.8.24 0x08 0x08

当用户发送密钥成功后服务器返回响应的一些消息,如会话密钥,主机名,程序等。

Magic Data length Data Format Data length Data Format … Data length Data Format

注:

如果data length 为0 则后面数据为

1 4 4 … 4

可变 数据 可变 数据

可变 数据

2.8.25 0x08 0x20 Session Key

当当前用户使用grant命令更改当前用户密码之后,系统需要重新发送用户名(0x0352)和密码(0x0351),并更新会话密钥。

Magic Session key

1 32

会话密钥

2.8.26 0x08 0x9c Db version

当用户请求数据库版本信息(0x033b)时通过本命令返回版本信息。

Magic Data Format Data Format Data Format

1

可变 数据库版本信息 可变 数据库版本信息 可变 数据库版本信息

2.8.27 0x09 0x01

当ORACLE服务器收到用户关闭连接的消息时通过本命令确认关闭操作,然后断开TCP/IP连接。

Magic1 Magic2

1 2

总是0

2.8.28 0x10 0x19 Field Info

SQL查询语句如果有数据返回(如SELECT语句),则先返回各字段信息,然后在返回数据信息。

字段信息结构:

Magic1 Field num Magic2 Field Info Field Info …

29 2 3

字段个数

可变 字段信息 可变 字段信息 …

Field Info Magic3

注:字段信息个数为field num 单个字段信息结构:

Magic1 Type Magic2 Precision Scale Magic3 Charsetid Charsetform Spare3 Magic4 Is null length length Data Format

可变 字段信息 12

07 00 00 00 07 78 6a 05 1a 0f 0b 0c

1 1 1 1 1 20 2 2 2 2 1 1 4

字段类型

可变

2.8.29 0x11 0x69

当用户查询数据时,即使用0x035e命令时通常会先发送0x1178和0x1169命令。

Request id Magic

1 12

2.8.30 0x11 0x6b

Request id Magic

1 12

2.8.31 0x11 0x78

当用户查询数据时,即使用0x035e命令时通常会先发送0x1178和0x1169命令。

Request id 1 Magic

12

3 典型的使用序列

3.1 数据库登陆

请求响应 序请求包 操作 列 正常连接 无记录 1 连接包

2 连接包 不正常连无记录

1

连接包

3.2 数据结构内部命令序列

请求

响应

序请求包

操作 列

Select

无记录 1 0x1169+0x035e Select

1条记1

0x1169+0x035e

2

0x3e

Select

多条记1

0x1169+0x035e 录

2 0x3e 3

0x0305 Insert 正确 1 0x1169+0x035e Insert

错误

1

0x1169+0x035e

响应包 重定向包 接受包 拒绝包

响应包

0x1019+0x06010 +x0401

0x1019+0x0601 +0805+0x0401 0x0600+0x0401 0x1019+0x0601 +0805+0x0402 0x0600+0x0401 0x0600+0x0401 0x0805+0x0402

Mark

说明 正常连接

不正常连接

说明

errcode=1403

errcode=0 (errcode=1403) errcode=0 (errcode=1403)

Mark

2

Create table Create table

2

Drop table Drop table

Alter table Alter table

2

Update Update

正确 错误

1 2

Desc table 正确 中断连接

正确

1 1 2

Mark

0x1169+0x035e 0x1169+0x035e Mark 0x0377 0x0309

发送flag为0x0040的包结束

错误

1

0x1169+0x035e

Mark Mark 0x0401 0x0805+0x0401

Mark Mark 0x0401 0x0801+0x0405 0x0901

正确

2

Mark

0x1169+0x035e

错误

1

0x1169+0x035e

Mark Mark 0x0401 0x0805+0x0401

正确

1

Mark

0x1169+0x035e

错误

1

0x1169+0x035e

Mark Mark 0x0401 0x0805+0x0401

正确

1

Mark

0x1169+0x035e

0x0402 0x0805+0x0401

通过以上命令序列我们可以知道,ORACLE基本操作主要通过0x035e,0x0303请

求,而通过0x1019返回字段信息,0x0601和0x0600返回数据信息,所以我们需要着重分析这几个命令,对于ORACLE的系统数据分析其实也非常重要,但是分析发现0x08命令非常复杂,鉴于时间问题,没有具体分析。