南邮CTF:WEB 起名字真难

条件:

= $one) && ($digit <= $nine) )
                {
                        return false;
                }
        }
           return $number == '54975581388';
}
$flag='*******';
if(noother_says_correct($_GET['key']))
    echo $flag;
else 
    echo 'access denied';
?>

过程

  • 一开始理解错误,函数的返回值看成了
    return $number = ‘54975581388’;
  • 不明所以,结果去看writerup,说是换一种表达形式,成功了
  • 然后,我自己跟着敲了一边条件代码,发现了错误,理解了题意

题意

题目要求不能输入数字,但是输入的字符串必须和54975581388相同
用和54975581388等值的16进制表示,很巧,全不是数字,就成功了

利用了php的弱类型的特性


总结

当遇到 与数字字符串对比校验的时候,可以尝试转换为等值的16进制字串

你可能感兴趣的:(CTF)