詳解MYSQL數據庫密碼的加密方式及破解方法(1)


轉自 http://blog.csdn.net/paul123456789io/article/details/53081921

 

MySQL數據庫用戶密碼跟其它數據庫用戶密碼一樣,在應用系統代碼中都是以明文出現的,在獲取文件讀取權限后即可直接從數據庫連接文件中讀取,例如asp代碼中的conn.asp數據庫連接文件,在該文件中一般都包含有數據庫類型,物理位置,用戶名和密碼等信息;而在MySQL中即使獲取了某一個用戶的數據庫用戶(root用戶除外)的密碼,也僅僅只能操作某一個用戶的數據庫中的數據。

在實際攻防過程中,在獲取Webshell的情況下,是可以直下載MYSQL數據庫中保留用戶的user.MYD文件,該文件中保存的是MYSQL數據庫中所有用戶對應的數據庫密碼,只要能夠破解這些密碼那么就可以正大光明的操作這些數據,雖然網上有很多修改MYSQL數據庫用戶密碼的方法,卻不可取,因為修改用戶密碼的事情很容易被人發現!

研究MYSQL數據庫的加解密方式,在網絡攻防過程中具有重要的意義;試想一旦獲取了網站一定的權限后,如果能夠獲取MYSQL中保存用戶數據,通過解密后,即可通過正常途徑來訪問數據庫;一方面可以直接操作數據庫中的數據,另一方面可以用來提升權限。通過在網絡上查找資料,目前關於破解MYSQL方面的研究不多,本文算是拋磚引玉,雖然效果不是特別好,但也算是對破解MYSQL數據庫用戶密碼的一種探討和嘗試。

(一)MYSQL加密方式

MYSQL數據庫的認證密碼有兩種方式,MYSQL 4.1版本之前是MYSQL323加密,MYSQL 4.1和之后的版本都是MYSQLSHA1加密,MYSQL數據庫中自帶Old_Password(str)和Password(str)函數,它們均可以在MYSQL數據庫里進行查詢,前者是MYSQL323加密,后者是MYSQLSHA1方式加密。

(1)以MYSQL323方式加密

 

SELECT Old_Password('bbs.antian365.com');

 

查詢結果MYSQL323 = 10c886615b135b38

(2)以MYSQLSHA1方式加密

 

SELECT Password('bbs.antian365.com');

 

查詢結果MYSQLSHA1 = *A2EBAE36132928537ADA8E6D1F7C5C5886713CC2   執行結果如圖1所示,MYSQL323加密中生成的是16位字符串,而在MYSQLSHA1中生存的是41位字符串,其中*是不加入實際的密碼運算中,通過觀察在很多用戶中都攜帶了“*”,在實際破解過程中去掉“*”,也就是說MYSQLSHA1加密的密碼的實際位數是40位。


(二)MYSQL數據庫文件結構

1.MYSQL數據庫文件類型

MYSQL數據庫文件共有“frm”、“MYD”“和MYI”三種文件,“.frm”是描述表結構的文件,

“.MYD”是表的數據文件,“.MYI”是表數據文件中任何索引的數據樹。一般是單獨存在一個文件夾中,默認是在路徑“C:\Program Files\MYSQL\MYSQL Server 5.0\data”下。

2.MYSQL數據庫用戶密碼文件

在MYSQL數據庫中所有設置默認都保存在“C:\Program Files\MYSQL\MYSQL Server 5.0\data\MYSQL”中,也就是安裝程序的data目錄下,如圖2所示,有關用戶一共有三個文件即user.frm、user.MYD和user.MYI,MYSQL數據庫用戶密碼都保存在user.MYD文件中,包括root用戶和其他用戶的密碼。


(三)破解MYSQL密碼

1.獲取MYSQL數據庫用戶密碼加密字符串

使用UltraEdit-32編輯器直接打開user.MYD文件,打開后使用二進制模式進行查看,如圖3所示,可以看到在root用戶后面是一串字符串,選中這些字符串將其復制到記事本中,這些字符串即為用戶加密值,即506D1427F6F61696B4501445C90624897266DAE3。

注意:  

(1)root后面的“*”不要復制到字符串中。  

(2)在有些情況下需要往后面看看,否則得到的不是完整的MYSQLSHA1密碼,總之其正確的密碼位數是40位。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM