web5
题目提示“矛盾”
打开以后,还是几行代码
解读一下:
is_number()是判断变量是否为数字,前面加”!”则是“取非”
所以如果$num不是数字,则会运行下面的代码
然后输出$num
然后再验证如果$num等于1
则输出flag
这代码似乎是矛盾的。
这里用到了php的弱类型特性
php中判断等于有”==”和”===”两种
前者只比较数值,而后者比较数值和类型
而当字符串和数字做”==”比较时,是把字符串转换成数字,规则为(我的理解):从第一个字符开始,逐个读入数字,直到碰到非数字字符为止,如果第一个字符非数字,则值为0
所以只要在url后面加个/?num=1a,就可以的,得到flag