$num=$_GET['num'];
if(!is_numeric($num)) // is_numeric判断num是否为数字
{
echo $num;
if($num==1)
echo 'flag{**********}';
}
-
is_numeric
函数的返回值为Ture和False ,其中数字和数字字符串(浮点型字符不包含在内)返回Ture,其他的返回False。 -
审计代码发现如果要获得flag,需要满足的条件是
is_numeric($num)
为假,($num==1)
为真。 -
php是弱类型语言,数字和字符(串)的比较是存在类型转换的,对字符串来说是以开头的数字为准
,在松散比较中,1"qid#@# ==1 是正确的。