经常在服务器提权的时候,尤其是windows环境下,我们发现权限不高,却可以读取mysql的datadir目录,并且能够成功下载user.MYD这个文件。
要知道,MySQL的root密码可是存放在这个文件下的。
但是在读取内容的时候,经常会遇到root密码hash不完整的情况
首先看上面图片,发现root的hash密文:*0AAF4D0BF2BC95FAF
前面带*号说明是mysql5以后的40位加密,但是显然这个长度不足。
技巧就是:把所有的密文hash全部列出来
*0AAF4D0BF2BC95FAF | 17位 |
*9BE78 | 5位 |
48D82BC0C4B0FBF5ECE1DD6 | 23位 |
061C1DB37F45A31340CF93A0EDF61B3E185 | 35位 |
*8909AF1D01A10DD33B0D741F0DEE9FFF7128A6C4 | |
*9BE78861C1DB37F45A31340CF93A0EDF61B3E185 | |
*7C572822FE4D3AAE0085F86E51F6401115F1C337 |
显而易见的,root的17位拼23位就是完整的40位密码了
至于5位拼35位的那个密码,稍微有点问题,我们看后面其实有个9BE78
开头的hash,但是略有不同
*9BE78 0 61C1DB37F45A31340CF93A0EDF61B3E185
*9BE78 8 61C1DB37F45A31340CF93A0EDF61B3E185
区别发生在第6位hash,应该是同一个字符被中间截断了,后面的hash才是正确的。