MySQL協議分析(1)

MySQL協議分析

此階段的協議分析是在未壓縮未加密狀況下的協議分析html

思路:

結合Oracle官網和本身用wireshark抓的網絡數據包進行協議分析mysql

官網說明

mysql包共分爲4段,格式以下:sql

第一段:payload(一般是執行的SQL語句)的長度佔3字節;網絡

第二段:序列id佔1字節;fetch

第三段:payload類型佔1字節;ui

第四段:payload內容佔n字節,n爲第一段描述的長度。加密

wireshark抓包分析驗證

0000   1a 00 00 00 03 73 65 6c 65 63 74 20 2a 20 66 72  .....select * fr
0010   6f 6d 20 73 6d 61 6c 6c 74 61 62 6c 65 3b        om smalltable;
MySQL Protocol
    Packet Length: 26
    Packet Number: 0
    Request Command Query
        Command: Query (3)
        Statement: select * from smalltable;

咱們看到1a 00 00 00 03就是mysql的協議頭debug

1a 00 00 轉換爲10進製爲26,與wireshark解析的Packet Length:26符合(也說明了wireshark原理不過就是把協議對應解析);code

00 是sequence id,也就是序列id,咱們沒有建立序列,也就沒有此id;htm

03 是payload的類型,對於類型說明,官網說明以下:

00 COM_SLEEP
01 COM_QUIT
02 COM_INIT_DB
03 COM_QUERY
04 COM_FIELD_LIST
05 COM_CREATE_DB
06 COM_DROP_DB
07 COM_REFRESH
08 COM_SHUTDOWN
09 COM_STATISTICS
0a COM_PROCESS_INFO
0b COM_CONNECT
0c COM_PROCESS_KILL
0d COM_DEBUG
0e COM_PING
0f COM_TIME
10 COM_DELAYED_INSERT
11 COM_CHANGE_USER
12 COM_BINLOG_DUMP
13 COM_TABLE_DUMP
14 COM_CONNECT_OUT
15 COM_REGISTER_SLAVE
16 COM_STMT_PREPARE
17 COM_STMT_EXECUTE
18 COM_STMT_SEND_LONG_DATA
19 COM_STMT_CLOSE
1a COM_STMT_RESET
1b COM_SET_OPTION
1c COM_STMT_FETCH
1d COM_DAEMON
1e COM_BINLOG_DUMP_GTID
1f COM_RESET_CONNECTION

第四段天然就是payload,也就是咱們的SQL語句。

未壓縮未加密的mysql協議分析完畢!

相關文章
相關標籤/搜索