这可以是哪个哈希函数?

时间:2010-07-06 22:38:17

标签: hash

我有一些字符串和一些哈希值,但我不知道使用了哪个哈希函数。有什么想法吗?

String        hash

NN34W    f8b46bcdc3b3c92
EM3M3    d8015ca876fd051
HXDKD    a740e97464e5dfe
AKREJ    aa7aa2dadfcbe53
3bNMK    0f11440639191d9

编辑:

感谢答案,这是验证码的散列。

https://registracia.azet.sk/

如果检查验证码图像的URL,最后是HASH值。这个

在服务器上发送HTTP POST是发送 TEXT:(P92M4)和HASH(72fec89a2e0ade2)等值。

我喜欢知道TEXT P92M4的哈希值如何,以及在服务器上发送的HASH值控制。

因为我喜欢为我的学校项目制作自己的验证码系统,所以我首先分析情况和弱点。

2 个答案:

答案 0 :(得分:5)

据我了解您的情况,POST请求会将“text”和“hash”发送到CAPTCHA服务器。然后,它使用它们用于散列文本的任何散列函数,检查它是否与散列匹配,并确定您是否成功。据推测,服务器会向您发送图像以及哈希值,然后输入文本。

因此,如果你弄清楚散列函数,你就完全打破了这个CAPTCHA系统:你需要做的就是使用散列函数散列任何字符串,然后在发送你的POST请求时,忽略散列他们发送给你,只是发送你的计算文本和哈希对。因此,您可以非常轻松地自动成功通过CAPTCHA挑战。

为了说明散列“反转”的难度,请考虑以下可能会使用的散列:

  • 将TEXT分成交替的字母:因此ABCDE成为ACE和BD
  • md5使用盐“fj49w0utw4a”和“r8h3wlsd”的两半
    • md5(“fj49w0utw4a”。“ACE”)是115c05f0e5300f958ba01caa64b989f
    • md5(“r8h3wlsd”。“BD”)是74eecae86ef46382eb95443a1b1fa8f5
  • 取第一个字符串的每个第3个字符和第二个字符串中的每个第4个字符,并将它们交替,直到你有15个字符
    • 115c05f0e5300f958ba01caa64b989f 55e09b1ab9
    • 74eecae86ef46382eb95443a1b1fa8f5成为e8425af5
    • “ABCDE”的最终哈希值: 5 e 5 8 e 4 0 2 9 5 b'/ b> A 1 ˚F A

你真的没办法对它进行逆向工程。

<小时/> 更新
请注意,如上所述(并在该网站上实施)的CAPTCHA非常不安全,因为它们只需要知道一个有效的文本/哈希组合

要演示,请使用Firebug或同等版本,然后导航到表单的CAPTCHA区域。我们将编辑一些隐藏的值。

  • form[captcha_url]值从https://pokec.azet.sk/sluzby/system/captcha/[somehash]更改为https://pokec.azet.sk/sluzby/system/captcha/ee2be1f239e5d17
  • form[captcha_hash]值从[somehash]更改为ee2be1f239e5d17
  • 无论图片如何显示,请为CAPTCHA键入“P22KD”

有多种方法可以缓解此漏洞。正如Tangrs建议的那样,您可以将哈希值存储在会话变量中,以便客户端无法对其进行操作。不太优雅但也有效的是将提交的CAPTCHA存储在数据库中,并且不允许重复的CAPTCHA,如在问题中的链接上实现的那样。这很好,直到你开始耗尽未使用的CAPTCHA并最终发生冲突。

答案 1 :(得分:1)

似乎比任何行业哈希都要小......可能它是否合适? 更多的信息会有所帮助,但是,你从哪里获得它?