【问题标题】:MySQL SELECT accounts by username and unencrypted password通过用户名和未加密密码的 MySQL SELECT 帐户
【发布时间】:2013-09-27 21:26:41
【问题描述】:

我已经为此工作了一段时间,并发现了许多有关创建帐户的详细信息,但在从用户名和原始密码的情况下从帐户获取数据方面没有任何可靠的信息。对于这种情况,我们正在使用一个处理所有 Web 内容的 Joomla 服务器,以及一个为各种目的而创建的 C# 聊天服务器。

对于初学者来说,Joomla 使用 MD5(password)+":"+salt 处理 66 位哈希密码。当然我们不希望用户知道散列密码,所以我试图弄清楚如何从用户名和未加密的密码中获取行。

我想避免将密码拉到服务器,即使用户无法直接访问信息。我越是尝试对此进行研究,它就越不可能。

最近的尝试:

SELECT name, usertype FROM fnpolit2.llc_users WHERE username='userid' AND password='password';
SELECT name, usertype FROM fnpolit2.llc_users WHERE username='userid' AND password LIKE '%:%';
SELECT name, usertype FROM fnpolit2.llc_users WHERE username='userid' AND password LIKE (MD5('password')+':%');

【问题讨论】:

    标签: mysql login encryption


    【解决方案1】:

    您的密码作为 md5(password:salt) 存储在 db 中,然后您可以使用这样的用户名和密码为用户进行选择

    SELECT name, usertype FROM fnpolit2.llc_users WHERE username='userid' AND password =(MD5(CONCAT('password',':','salt')));
    

    你想要一个用户名和密码匹配的用户,所以你应该寻找不一样的平等 并且 md5 已经损坏,所以不要将它用于生产系统。

    【讨论】:

    • 盐种子是否存储在表中?我无法想象它会如何检查与一组随机数字一起加密的密码的登录详细信息。
    • 是的,您必须将盐存储在数据库中,或者根据某些始终为用户生成相同盐的属性来计算它。否则你会怎么做?
    • 一直在扫描 Joomla 中的 php 文档。我找不到盐/种子的数据库/值。发现在基于安全性等生成密码的过程中使用了各种函数,但每个函数都从其他地方请求种子/盐。
    • 我没有使用 joomla 的经验,但我在 joomla 论坛上发现了这个可能对forum.joomla.org/viewtopic.php?p=2414813有帮助
    【解决方案2】:

    我正在寻找的语法是

    SELECT name, usertype FROM fnpolit2.llc_users WHERE username='userid' AND password=(CONCAT(MD5(CONCAT('password','salt')),':','salt'));
    

    密码被加盐,然后将加盐密钥附加到密码上。意味着我要么必须从数据库中获取密码,要么编写 SQL 函数进行身份验证。

    【讨论】:

      猜你喜欢
      • 2016-01-28
      • 2017-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-16
      • 2010-10-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多