本文最后更新于521 天前,其中的信息可能已经过时,如有错误请发送邮件到big_fw@foxmail.com
### 弱类型比较
由于php中存在的弱类型比较,所以我们可以通过hash比较的缺陷去绕过
比如:
var_dump("0e12345" == " 0e66666");//true
var_dump(md5(‘240610708’) == md5(‘QNKCDZ0’));//true
也就是只要两个数的md5加密后的值以0e开头就可以绕过,因为php在进行弱类型比较(即 == )时,会现转换字符串的类型,在进行比较,而在比较是因为两个数都是以0e开头会被认为是科学计数法,0e后面加任何数在科学计数法中都是0,所以两数相等,在进行严格比较( === )时才会先判断字符串类型是否相等,在比较。
像这样特殊的md5值还有
240610708: 0e462097431906509019562988736854
QLTHNDT: 0e405967825401955372549139051580
QNKCDZO: 0e830400451993494058024219903391
PJNPDWY: 0e291529052894702774557631701704
NWWKITQ: 0e763082070976038347657360817689
NOOPCJF: 0e818888003657176127862245791911
MMHUWUV: 0e701732711630150438129209816536
MAUXXQC: 0e478478466848439040434801845361
