解题方案网上已经有一堆了,这里主要总结下get到的知识点。
1、php中的字符串比较
当php进行一些数学计算的时候,当有一个对比参数是整数的时候,会把另外一个参数强制转换为整数。注:bool类型的true跟任意字符串可以弱类型相等
例如:
var_dump(0 == '0'); // truevar_dump(0 == 'abcdefg'); // true var_dump(0 === 'abcdefg'); // falsevar_dump(1 == '1abcdef'); // true
又如下图"忘记密码了"一题中,需要两个条件:token长度为10,且等于0,同时emailAddress也要满足相应条件。
token要想长度为10,且等于‘0’,再考虑到php的数学计算的特性(PHP在处理哈希字符串时,会利用”!=”或”==”来对哈希值进行比较,它把每一个以”0E”开头的哈希值都解释为0,所以如果两个不同的密码经过哈希以后,其哈希值都是以”0E”开头的,那么PHP将会认为他们相同,都是0。),所以构造token=0e11111111即可。