我有一些字符串和一些哈希值,但我不知道使用了哪个哈希函数。有什么想法吗?
String hash
NN34W f8b46bcdc3b3c92
EM3M3 d8015ca876fd051
HXDKD a740e97464e5dfe
AKREJ aa7aa2dadfcbe53
3bNMK 0f11440639191d9
编辑:
感谢答案,这是验证码的散列。
如果检查验证码图像的URL,最后是HASH值。这个
在服务器上发送HTTP POST是发送 TEXT:(P92M4)和HASH(72fec89a2e0ade2)等值。
我喜欢知道TEXT P92M4的哈希值如何,以及在服务器上发送的HASH值控制。
因为我喜欢为我的学校项目制作自己的验证码系统,所以我首先分析情况和弱点。
答案 0 :(得分:5)
据我了解您的情况,POST请求会将“text”和“hash”发送到CAPTCHA服务器。然后,它使用它们用于散列文本的任何散列函数,检查它是否与散列匹配,并确定您是否成功。据推测,服务器会向您发送图像以及哈希值,然后输入文本。
因此,如果你弄清楚散列函数,你就完全打破了这个CAPTCHA系统:你需要做的就是使用散列函数散列任何字符串,然后在发送你的POST请求时,忽略散列他们发送给你,只是发送你的计算文本和哈希对。因此,您可以非常轻松地自动成功通过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
有多种方法可以缓解此漏洞。正如Tangrs建议的那样,您可以将哈希值存储在会话变量中,以便客户端无法对其进行操作。不太优雅但也有效的是将提交的CAPTCHA存储在数据库中,并且不允许重复的CAPTCHA,如在问题中的链接上实现的那样。这很好,直到你开始耗尽未使用的CAPTCHA并最终发生冲突。
答案 1 :(得分:1)
似乎比任何行业哈希都要小......可能它是否合适? 更多的信息会有所帮助,但是,你从哪里获得它?