日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

mysql登录抓包_MySQL登录验证的抓包

發(fā)布時(shí)間:2025/3/21 数据库 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql登录抓包_MySQL登录验证的抓包 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

理論知識(shí)部分摘錄自:

http://blog.chinaunix.net/uid-9234131-id-5088292.html

http://blog.csdn.net/sissiyinxi/article/details/7660389

1.服務(wù)器端會(huì)隨機(jī)生成一個(gè)random string發(fā)送給客戶(hù)端;

2.客戶(hù)端收到random string后,進(jìn)行hash加密

第一步,將密碼hash,得到hash值hash_stage1;? eg.hash_stage1=sha1("password");

第二步,二次hash,得到hash_stage2;? eg. hash_stage2=sha1(hash_stage1);

第三步,將密碼二次hash得到的值與random string進(jìn)行hash,得到hash_stage3; eg. hash_stage3=sha1("randomstring",hash_stage2);

第四步,異或處理準(zhǔn)備發(fā)送給服務(wù)器端,得到reply=xor(hash_stage1,hash_stage3);

最后,將reply的值發(fā)送給服務(wù)器端。

3.服務(wù)器端收到reply后同樣進(jìn)行hash運(yùn)算

第一步,將保存的hash形式的密碼hashpassword與random string進(jìn)行hash,得到server_hash_stage1=sha1("randomstring","hashpassword");

第二步,將客戶(hù)端發(fā)送的reply與剛才得到的hash值進(jìn)行異或運(yùn)算,得到xor_value;eg. xor_value=xor(reply,server_hash_stage1);

第三步,將得到的異或值進(jìn)行hash,得到server_hash_stage2;eg. server_hash_stage2=sha1(server_hash_stage1);

第四步,驗(yàn)證,將最后得到的hash值server_hash_stage2與保存的密碼hashpassword進(jìn)行比較。eg.?? server_hash_stage2==hashpassword,相等則驗(yàn)證通過(guò)。

下圖是我從mysql5.7.22代碼里面截取的偽代碼:

官方文檔:

MySQL uses passwords in two phasesof client/server communication:

When a client attempts to connectto the server, there is an initial authentication step in which the client mustpresent a password that has a hash value matching the hash value stored in theuser table for the account the client wants to use.

After the client connects, it can(if it has sufficient privileges) set or change the password hash for accountslisted in the user table. The client can do this by using the PASSWORD()function to generate a password hash, or by using a password-generatingstatement (CREATE USER, GRANT, or SET PASSWORD).

> SELECT PASSWORD('Abcd@1234');?? # mysql用戶(hù)密碼的計(jì)算方式:(hash方式)

+-------------------------------------------+

| PASSWORD('Abcd@1234')???????????????????? |

|-------------------------------------------|

|*47B150E012313114C04A1C9336709424085B6BD0 |

+-------------------------------------------+

使用wireshark抓取通過(guò)navicat登錄虛擬機(jī)的mysql-5.7的部分截圖:

第5~7個(gè)包是三次握手包。

第8個(gè)包:

server告知客戶(hù)端,當(dāng)前服務(wù)器的字符集、認(rèn)證使用的插件。并將隨機(jī)生成的一個(gè)salt值發(fā)給client。

第9個(gè)包:

client端收到server端發(fā)來(lái)的salt值,然后使用salt值和本地的登錄密碼生成一個(gè)新的隨機(jī)串,然后將新的串發(fā)往服務(wù)端(就是上圖中的dd249f24....這串字符串)。服務(wù)端check字符串反解析。

第10個(gè)包,是server-->client的ACK包。

第11個(gè)包開(kāi)始及之后的一些packet就是client server之間的通訊了。

總結(jié)

以上是生活随笔為你收集整理的mysql登录抓包_MySQL登录验证的抓包的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。