2013-09-23 55 views
0

我一直在研究这个问题一段时间,并且发现了很多有关创建帐户的细节,但是从给定用户名和原始密码的帐户获取数据并没有什么可靠的。对于这种情况,我们正在处理一个处理所有网页内容的Joomla服务器,以及一个为各种目的而创建的C#聊天服务器。MySQL通过用户名和未加密的密码选择帐户

对于初学者来说,Joomla使用一个MD5(密码)+“:”+ 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')+':%'); 

回答

1

您的密码存储在数据库为MD5(密码:盐),那么你可以像这样

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

的用户名和密码的用户做一个选择,你想要一个具有匹配的用户名和密码的用户,所以你应该寻找与 不同的平等,并且md5已经被破坏,所以不要在生产系统中使用它。

+0

盐种子是否存储在表中?我无法想象它将如何检查密码的登录细节,并在一个随机的一组数字中加密而没有一个密码。 – Komak57

+0

是的,您必须将盐存储在数据库中,或者根据某些为用户始终产生相同盐的属性进行计算。你还会怎么做? – noobandy

+0

一直在Joomla扫描php文档。我找不到盐/种子的数据库/值。发现基于安全性等生成密码的过程中使用的各种函数,但每个函数都从别处请求种子/盐。 – Komak57

0

我一直在寻找的语法是

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

密码被腌制,然后将盐键连接到密码。意味着我必须从数据库中获取密码,或者编写一个SQL函数进行身份验证。