弱类型比较(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)用于比较两个字符串。如果str1<str2,则返回的值<0;如果str1>str2,则返回的值>0;如果str1=str2,则返回0


例题


例题解析

Sha1函数的漏洞


与strcmp函数的漏洞类似

Switch绕过


与"=="相似

json绕过



例题


例题解析

array_search函数的漏洞


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


例题

参考:

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容