强比较
使用三个等于比较,“===”,比较值,也比较类型。
如
a === b先判断a,b类型,若相同,则比较值,若不同,就返回false
饶过
可以通过两个相同的md5值进行绕过
也可以使用数组饶过
a[]1&b[]=1
可以在结尾加上一个字母进行绕过
a[]=123a
弱比较
使用两个等于作比较,“==”,只比较值,不比较类型
如
a==b先将值转换为同类型再做比较
转换的规则:
1、字符和字符作比较,同类型,比较内容
“abc”==“c” 返回false
2、数字和数字作比较
123==12 false
123=123 true
3、字符型和数字型比较,若字符开头为数字,则转换为数字,若开头不为数字,则为null与0相等。
“abc123”==123 false
“123ac”==123 true
“abc123”==0 true
“123”=123 true
“123abc” == 112 false
4、布尔型和任意值的比较
布尔值true和任意字符若比较都相等,除了0和false
5、字符型
字符型的拖比较只能使用0e饶过,且0e后面不能有字母。0e是科学计数法是一种,0e后面跟什么值都是0
常见的0e开头的md5值
QNKCDZO 0E830400451993494058024219903391
240610708 0E462097431906509019562988736854
s878926199a 0E545993274517709034328855841020
s155964671a 0E342768416822451524974117254469
s214587387a 0E848240448830537924465865611904
例如
只有一次md5加密
$a=$_GET['a'];
$a==md5($a);
$a=$_GET['a'];
$a==md5($a);
a= QNKCDZO&b=240610708
md5(‘0E830400451993494058024219903391’)=0E462097431906509019562988736854
两次md5加密
$a=$_GET['a'];
$a==md5($a);
数组饶过
md5不能加密数组,a[]=1,b[]=1,传入数组会报错,执行的话会返回空
因为md5(a[]=1)和md5(b[]=1)的值都为空,所以两个等于就为true