前言:最近开始接触bugku,感觉适合新人培养兴趣。自己在学习的时候写个笔记,督促自己多去学习和巩固知识。如果文章和代码有表述不当之处,还请大佬不吝赐教。
知识积累
is_numeric()函数: 判断参数是否为数字的函数
PHP中的两种弱类型比较运算符 == 和 ===
- === 恒等计算符,在进行比较的时候,会先判断两变量类型是否相等,再比较数值;
- == 比较运算符号,在进行比较的时候,会先将两变量类型转化成相同,再比较数值。
注:当涉及到比较数字和字符串时,字符串会被转换成数值并且比较按照数值来进行比较
解题
$num=$_GET['num'];//GET方式得到参数num值
if(!is_numeric($num))//判断num是否为数字,如果不是则输出num的值
{
echo $num;
if($num==1)//如果num==1则输出FLAG
echo 'flag{**********}';
}
题目中要打印出flag,要参数num不是数字,但是值要为1,所以是矛盾的。
这里构造?num=1xxx即可绕过验证,而又使num为1。