有一个网站可以为您提供令牌和 unixtime 以访问另一个域上的资源。
我可以使用这两个值来访问它:
例子: example.com/test.txt?st=[HASH]&e=[UNIXTIME]
我构建了一个小脚本来生成这些值并以格式显示它们
[UNIXTIME] : [HASH]
http://46.101.150.244/m/serve.php(您可以刷新以查看新组合。)
观察:
当我使用远程服务器请求令牌并获得“st”和“e”时,我无法访问该资源。-> 绑定到一个特定的IP,没有其他参数。
同样,当从不同的 ips 在同一 unix 时间生成 2 个令牌时,它们是不同的 -> 1 的确认。
当在一秒钟内从同一 IP 多次生成令牌时,令牌始终相同,直到 unix 秒过去。-> 可以肯定,唯一的动态因素是 IP 和时间。
查看散列的最后一个字符时,它始终是 A、Q、g 或 w。它们的十六进制值是(相同顺序)41、51、67、77。A、Q 和g、w 正好相隔0x10。
我假设它是 base64,但它有 - 和 _ 而不是 + 和 /。你认为这可能吗?它也有22个字符。
我尝试了很多不同的东西,尝试解码 base64(通常是填充错误),尝试使用子字符串可能会找到一些有用的东西,例如二进制表示的 IP,但是由于每次 unix 时间更改时整个字符串都会完全更改,我真的不知道如果有什么我可以做的。
它完全有可能被加盐,我找到解决方案的机会为零,但是最后一个字母总是四种可能性之一的事实给了我希望。
我在应对这一挑战时获得了很多乐趣,如果有人可以提示如何应对这种情况,我应该尝试什么等等,那就太好了!