进入题目网页
可以看到网页给出了php的源码,下面先来分析一下源码:
这里flag被拆成了两段,先看第一段。
需要GET形式提交变量a,要求$a==0 and $a,这里使用==符号用到了php的弱类型相等,即弱比较只要求比较的两个值在转换类型后相等即可。如果两个值的类型不同,会尝试将其中一个值转换为另一个值的类型。
而强类型相等符合===:强比较要求比较的两个值不仅是值相等,而且类型也必须相等。只有当值和类型都相等时,才会返回 true。
后面一个条件则是$a存在,即$a是一个非‘1’的任意字符
这样就得到了flag的前半段。
下面就是$b的判断条件,要求b不能是一个数字,且b要大于1234,由于php的弱类型转化,这里需要在前面有一段数字大于1234,并在这段数字后面拼接字符来确保b不会被is_numeric()函数判定为数字,这样就有了b的值12345a
这样就得到了后半段flag,我们将a和b同时传入,就能得到完整的flag了。