直接把源码贴出来了,大概意思就是,满足三个函数后,会输出flag
- ctype_alpha()函数用于检测字符串中是否仅包含字母,是则返回true,否则返回false
- is_numeric()函数用于检测变量是否为数字或数字字符串,是则返回true,否则返回false
- 比较md5
也就是说,我们要构造两个变量v1、v2(字符串和数值)并使两者md5值相同。、
这里就涉及到了md5绕过的知识。常见的md5绕过有以下几种
1.0e绕过
在php中,==为弱等于,===为强等于----区别在于是否会比较变量类型。那么如果在md5转换后的值为0e开头,则会根据科学计数法转换为0.其中符合的有
QNKCDZO
240610708
byGcY
sonZ7y
aabg7XSs
aabC9RqS
s878926199a
s155964671a
s214587387a
s1091221200a
so QNKCDZO=0==0=240610708
2.数组绕过
md5不能加密数组,不然会报错并返回null
如:md5(a[]=1) === md5(b[]=1) ------>null === null
ps:可以绕过===
3.MD5碰撞
这个就不介绍了,当年山大的王小云教授大家应该都知道
4.MD5-SQL注入
ffifdyop 的MD5加密结果是 276f722736c95d99e921722cf9ed621c
经过MySQL编码后会变成'or'6xxx,使SQL恒成立,相当于万能密码,可以绕过md5()函数的加密
使用0e,得到flag