我有以下字符串:"VGxkTk1GcHFTWGRhUjBacFkycENhMWx0VFRWT1IxazBUMVJXYUZwSFNUQmlWR1JxVGtSVmVVOVZjR3RhYWtFOQ%3D%3D"
和一个 for 循环:
for(var i=0,k=3,l=643; (i<=20 && l>200) || k>8;i++,k--){
console.count();
}
如何获取md5?
函数显示(){ var cookie =“VGxkTk1GcHFTWGRh UjBacFkycENhMWx0 VFRWT1IxazBUMVJX YUZwSFNUQmlWR1Jx VGtSVmVVOVZjR3Rh YWtFOQ%3D%3D”; for(var i=0,k=3,l=643; (i<=20 && l>200) || k>8;i++,k--){ console.count(); } }
document.write("Here is your cookie: "+cookie+" It's md5, isn't!");
// To solve this you must know about md5 hash
// Go to https://en.wikipedia.org/wiki/MD5 and read about it ;)
}
答案1
看起来字符串可以进行 base64 编码,然后进行 URL 编码...末尾的“%3D%3D”将是两个等号。
无论它的价值如何,将其传递给 Base64 解码器都会产生另一个看起来像有效的 Base64 编码的字符串。总共经过三次 Base64 解码器,您会得到一些看起来完全不同的东西......
echo "VGxkTk1GcHFTWGRhUjBacFkycENhMWx0VFRWT1IxazBUMVJXYUZwSFNUQmlWR1JxVGtSVmVVOVZjR3RhYWtFOQ==" \
| base64 -d | base64 -d | base64 -d |od -t x1z
结果是:
0000000 35 63 34 66 32 30 64 61 62 72 30 64 62 63 39 34 >5c4f20dabr0dbc94<
0000020 66 38 39 35 61 64 62 34 6d 37 63 34 35 32 39 4a >f895adb4m7c4529J<
0000040 64 66 30 >df0<
突然我们得到了所有小写字符和数字。尝试进行 Base64 解码会进一步导致一些无法打印的字符,然后来自 Base64 解码器的“无效输入”。所以也许这意味着什么,也许没有。
它比标准 MD5 校验和多了三个字符...并且这三个字符都在有效 md5sum 字符列表之外:“r”、“m”和“J”。删除这些,你会得到一个十六进制数字可以理论上是 MD5 校验和某物。