攻防世界 simple_php

1234)//如果 $b 大于 1234,将输出 $flag2
{
    echo $flag2;
}
?>

代码审计 

总结:a==0 且 a 为真,b 不是数字且 b>1234 这些条件同时满足才会返回 flag

PHP中,== 会自动转换类型然后进行比较,当一个字符串和一个数字进行比较时,PHP会尝试将这个字符串转换为一个数字。如下图这个例子中,字符串"2025a"会被转换为数字2025,因为在遇到非数字字符"a"时,转换就会停止。如果字符串不包含任何数字,那么它将被转换为0

所以

a可以构造成任意一个没有数字的字符串

b可以构造成2222a(任意一个比1234大的数+a),类型转换后为2222,大于1234

?a=='a'&b=2222a

攻防世界 simple_php_第1张图片

你可能感兴趣的:(php,android,开发语言)