New BugKu web5
web5
进入题目
直接得到源码
代码审计
$num=$_GET['num'];
if(!is_numeric($num))
{
echo $num;
if($num==1)
echo 'flag{**********}';
}
变量num被赋值_GET请求得到的值
再取反判断is_numertic来判断变量$num是否是数字或者数字字符串
不是就打印变量$num
然后判断$num的值是否是整数1
是就打印flag
这里就要说一下php这个弱语言的弱比较了
在php中==
这个比较是不严格的比较
只比较值,不会去比较类型的
在别的语言里1='1'
是返回false
python
php
php在弱比较的时候会把以数字开头的字符串转换成数字进行比较,必须是开头是数字,如果开头不是数字就会返回false(此方法在php8失效)
然后呢题里的
!is_numeric取反,传入的值不能是字符的1或者是整形的1
这时候可以传入1a(1和任意字符)
得到flag
66666
666
666