【问题标题】:How can I decrypt MySQL passwords如何解密 MySQL 密码
【发布时间】:2022-03-04 00:21:05
【问题描述】:

创建我公司使用的平台的开发人员不再为我们工作,我不知道如何从自定义 PHP 应用程序中检索密码

当我查看 PHPmyAdmin 时,密码被加密(例如 *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19)

如何更改或检索这些?

【问题讨论】:

  • 搞笑:密码好像是password :)
  • *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 = 密码不客气!
  • Alvaro 和 user1590835 - 我很惊讶没有人知道...
  • 我来不及了 :))) 但得到了很好的解决方案,请查看以下网站以获取 Mysql 密码()解密器:crackstation.net 希望这对其他人有帮助...

标签: mysql


【解决方案1】:

如果使用了适当的加密方法,将无法轻松检索它们。

只需用新密码重置它们。

编辑:字符串看起来像是在使用PASSWORD()

UPDATE user SET password = PASSWORD("newpassword");

【讨论】:

  • 不幸的是没有脚本可以重置它们
  • @Mike 不需要。只需在 phpMyAdmin 中对您要重置其密码的每个用户手动运行该命令即可。不使用重度破解是无法找回原始密码的
  • MD5 早就被生日攻击破解了。你自己看。 hashkiller.co.uk/md5-decrypter.aspx。 MD5 2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 的纯文本密码是 password
  • @DrDeo 好,。这不太对。首先,MySQL 使用自己的 SHA1 和 unhex 组合方法进行密码散列。其次,MD5 已经被“破解”,您可以从两个不同的输入中生成完全相同的哈希(因为 MD5 的算法失败设计)。这意味着,攻击者可以将自己生成的密码识别为合法密码(因为他计算了冲突哈希),但他永远无法知道原始密码是什么。这是不可逆的。此外,您提供的只是已知输入和哈希的数据库。
  • @chancyWu - 使用这个:ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';这里的文档:dev.mysql.com/doc/refman/8.0/en/resetting-permissions.html
【解决方案2】:

如何解密 MySQL 密码

你真的不能,因为它们是经过散列而不是加密的。

这是当前 MySQL 使用的 PASSWORD 函数的本质。您可以从 sql 终端执行它:

mysql> SELECT SHA1(UNHEX(SHA1("password")));

+------------------------------------------+
| SHA1(UNHEX(SHA1("password")))            |
+------------------------------------------+
| 2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 |
+------------------------------------------+
1 row in set (0.00 sec)

如何更改或检索这些?

如果您在登录 debian 或 ubuntu 系统时遇到问题,请先尝试此操作(感谢https://askubuntu.com/questions/120718/cant-log-to-mysql 的 tohuwawohu):

$ sudo cat /etc/mysql/debian.conf | grep -i password
...
password: QWERTY12345...

然后,使用 debian 维护用户登录:

$ mysql -u debian-sys-maint -p
password:

最后,修改用户密码:

mysql> UPDATE mysql.user SET Password=PASSWORD('new password') WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> quit;

当我查看 PHPmyAdmin 时,密码是加密的

相关,如果需要dump用户数据库获取相关信息,试试:

mysql> SELECT User,Host,Password FROM mysql.user;
+------------------+-----------+----------------------+
| User             | Host      | Password             |
+------------------+-----------+----------------------+
| root             | localhost | *0123456789ABCDEF... |
| root             | 127.0.0.1 | *0123456789ABCDEF... |
| root             | ::1       | *0123456789ABCDEF... |
| debian-sys-maint | localhost | *ABCDEF0123456789... |
+------------------+-----------+----------------------+

是的,这些密码加盐。因此,攻击者可以预先构建表并将它们应用于所有 MySQL 安装。此外,攻击者还可以获知哪些用户的密码相同。

不得不说,mySQL 的人们没有遵循最佳实践。 John Steven 在 OWASP 的Password Storage Cheat Sheet 上写了一篇关于密码存储最佳实践的优秀论文。公平地说,MySQL 人员这样做可能是因为架构、设计或实现中的痛点(我根本不知道)。


如果您使用PASSWORDUPDATE 命令并且更改不起作用,请参阅http://dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html。尽管该页面名为“重置权限”,但它实际上是关于如何更改密码。 (它令人困惑的 MySQL 密码更改程序是如此糟糕,以至于你不得不跳过这些箍,但它就​​是这样)。

【讨论】:

  • 这是在mysql中输入所有内容的必要密钥哈哈
【解决方案3】:

散列是一种单向过程,但使用密码列表,您可以重新生成散列并与存储的散列进行比较以“破解”密码。

此站点https://crackstation.net/ 尝试为您执行此操作 - 遍历密码列表并根据您的哈希告诉您明文密码。

【讨论】:

  • 这可能适用于简单/常见的密码,如 hello、welcome 等,但并非所有可能的组合都是其已知列表的一部分。
  • 是的,这是正确的,但所有事情都是确保您无法恢复散列。您不能回复文本。
  • 知道 password() 使用哪种散列或加密算法吗?
  • 我试过上面的网站。我无法解密密码 $2y$10$os3fPHLrHAGG2GkfLE0XhOjH3fI5Fmrc8rb.W3nxIC.Oxu9pX3clq)
  • 哈希是一种方式。你可以试试别的网站。并非所有人都会有哈希。让我检查一下。
【解决方案4】:

运气好的话,如果原始开发人员做得好,您将无法获取纯文本。我说“运气”,否则你可能有一个不安全的系统。

对于管理员密码,由于您拥有代码,您应该能够从已知的纯文本创建散列密码,以便您可以控制应用程序。遵循原开发者使用的算法。

如果它们没有被加盐和散列,那么请确保您将其应用为“最佳实践”

【讨论】:

  • 这与2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 面面相觑。但你是对的,负责这件事的人可能已经不在了,这可能是件好事。 +1 呼吁一些最佳做法!
【解决方案5】:

只需将它们更改为password('yourpassword')

【讨论】:

  • 它们不必加密吗?
  • +1,就是这样。 @Mike PASSWORD() 对其进行加密,查看manual 了解如何
  • 使用源迈克。当您登录时,应用程序的登录部分如何检查您的凭据?
  • 为什么不安全?显然,我并不是真的建议使用实际的字符串“yourpassword”。 MySQL的password-hash对你来说还不够吗?
【解决方案6】:

您无法解密 MySQL 密码,因为它们是使用MD5 hash 算法散列 算法,这不是 加密 算法.

【讨论】:

  • 这不是加密算法
  • 感谢@NinoŠkopac 的更正,这里的加密是一个更合适的词。
  • 不是 md5 坏了吗?
【解决方案7】:

linux服务器的最佳方式

sudo mysql --defaults-file=/etc/mysql/debian.cnf -e 'use mysql;UPDATE user SET password=PASSWORD("snippetbucket-technologies") WHERE user="root";FLUSH PRIVILEGES;'

这种方式适用于任何 linux 服务器,我 100% 确定在 Debian 和 Ubuntu 上你会赢。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-04
    • 2012-11-29
    • 2019-08-22
    • 2017-11-13
    • 2013-04-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多