访问地址发现要审计代码
$num=$_GET['num']; ///get传入一个num参数
if(!is_numeric($num)) ///is_numeric判断参数是否是数字或数字字符串,!表示否定
{
echo $num; ///输出num参数
if($num==1) ///判断num是否为1
echo 'flag{**********}'; ///如果num是1,则输出flag
}
* num必须不是数字才能引入if,但是又必须等于数字1才能拿到flag
方法一:弱类型绕过
如果比较一个数字和字符串或者比较涉及到数字内容的字符串,则字符串会被转换成数值并且比较按照数值来进行
随便构造了一个‘1admin’,正常绕过
方法二:以想到用科学计数法表示数字1,既不是纯数字,其值又等于1
num=1*e*0.1
方法三:可以使用%00进行截断,且1%00相当于1
方法四:尝试在传参后加上or 1 = 1,使逻辑永远为真
都可得到flag