https://ctf.bugku.com/challenges/detail/id/72.html
拿到题目如下
尝试?num=1,无果
分析代码
$num=$_GET['num'];//传入num参数
if(!is_numeric($num))//如果num不是整数
{
echo $num;//打印num
if($num==1)//如果num等于1,打印flag
echo 'flag{**********}';
}
确实是个矛盾,num不是整数还得等于1
继续尝试?num=true,思路对了,至少有一个输出结果
尝试?num=‘1’
去掉前面的引号就成功了
前面是1就可以
带着疑惑看了评论区,说是PHP弱比较
PHP一个数字和一个字符串进行比较或者进行运算时,PHP会把字符串转换成数字再进行比较。PHP转换的规则的是:若字符串以数字开头,则取开头数字作为转换结果,若无则输出0。 在PHP中,== 会先进行类型转换,再进行对比,而===会先比较类型,如果类型不同直接返回不相等。