发布时间 : 星期六 文章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命令非常复杂,鉴于时间问题,没有具体分析。