题目链接

[SWPUCTF 2021 新生赛]easy_md5

学习

=== 在进行比较的时候,会先判断两种字符串的类型是否相等,再比较

== 在进行比较的时候,会先将字符串类型转化成相同,再比较

如果比较一个数字和字符串或者比较涉及到数字内容的字符串,则字符串会被转换成数值并且比较按照数值来进行

<?php
var_dump("admin"==0); //true
var_dump("1admin"==1); //true
var_dump("admin1"==1) //false
var_dump("admin1"==0) //true
var_dump("0e123456"=="0e4456789"); //true
?>

前缀不是数字时,会转化成0,是数字时,会转化成数字

如果是0e开头,并且后面全是数字,则认为是0。

因而本题可以使用

md5('240610708') == md5('QNKCDZO')
QNKCDZO
0e830400451993494058024219903391

s878926199a
0e545993274517709034328855841020

s155964671a
0e342768416822451524974117254469

s214587387a
0e848240448830537924465865611904

s214587387a
0e848240448830537924465865611904

s878926199a
0e545993274517709034328855841020

s1091221200a
0e940624217856561557816327384675

s1885207154a
0e509367213418206700842008763514

array_search is_array绕过

array_search("admin",$a)

是==比较,也就是说,如果$a里面有0的话,array_search是认为比较成功的