弱类型比较(PHP)

"=="类型转换的规则


1.字符串和数字比较,字符串会转换为数字

admin-->0

2.混合字符串转换为数字,看字符串的第一个

1admin-->1   admin1-->0

3.字符串以xex开头(x表示数字),会被转换为科学计数法

2e2=2*10^2=200   0e2=0e48=0

0e开头的字符串

•QNKCDZO         0e830400451993494058024219903391

•s878926199a     0e545993274517709034328855841020

•s155964671a     0e342768416822451524974117254469

•s214587387a     0e848240448830537924465865611904

•s878926199a     0e545993274517709034328855841020

•s1091221200a   0e940624217856561557816327384675

•s1885207154a   0e509367213418206700842008763514

Strcmp函数的漏洞


Strcmp(str1,str2)用于比较两个字符串。如果str1str2,则返回的值>0;如果str1=str2,则返回0


例题


例题解析

Sha1函数的漏洞


与strcmp函数的漏洞类似

Switch绕过


与"=="相似

json绕过



例题


例题解析

array_search函数的漏洞


array_search()函数与in_array()一样,在数组中查找一个键值,如果找到了该值,则匹配元素的键名会被返回;如果没有找到,则返回false


例题

参考:

【从零开始学CTF】4、PHP中的弱类型比较

你可能感兴趣的:(弱类型比较(PHP))