打开题目链接是html和php代码
html没啥有用信息,这里审一下php代码 :
要求使用get方式传入两个参数 v1,v2
ctype_alpha()函数:用于检查给定的字符串是否仅包含字母;
is_numeric()函数:检测字符串是否只由数字组成,如果字符串中只包括数字,就返回Ture,否则返回False。
也就是说v1只能是字母,v2只能是数字
并且 md5($v1)==md5($v2),即传入的两个参数经过md5加密后要相等,才会输出flag
先给大家一个符合条件的payload:
?v1=QLTHNDT&v2=240610708
直接拿下
关于上面payload的解释:
QLTHNDT 和 240610708经过md5加密后密文都以0e开头,PHP会当作科学计数法来处理,也就是0的n次方,得到的值比较的时候都相同。
其他关于php常见特性的绕过可以参考我另一篇博客:
拓展:
在php中
== 是弱等于:在比较前会先把两种字符串类型转成相同的再进行比较,它不会比较变量类型,只比较值。
=== 是强等于:在比较前会先判断两种字符串类型是否相同,再进行比较,即先比较类型再比较值,需要都相等才会返回true。