打开页面发现是一段PHP代码
简单审计下代码,发现需要以get的方式传入两个参数a和b。
a参数的要求 :a必须等于0 且 a为真 。
is_numeric() 函数用于检测类型是否为数字或数字字符串 ,如果是数字和数字字符串则返回 TRUE,否则返回 FALSE。
b参数的要求 :b不能为数字或数字字符串,但b的值要大于1234 ,进行绕过,可以使 用%00进行截断
核心问题是理解PHP语言的弱类型
PHP是一种弱类型的语言,对于数字 0 和 空字符串 在进行布尔运算的时候都会转换为 false ;
php中有两种比较的符号 == 与 ===
== 是 不严格 的 比较, 会 先 进 行 类 型 转 换 再 比 较,比如字符串 '0' 和数字 0 比较的时候会返回true;
而对于 === 则会同时比较类型和变量值,若类型不相同也不会返回true;
在$a==$b的比较中
$a=' ';$b=null //true
$a=null;$b=true //true
$a=0;$b='0' //true
$a=0;$b='abcdef ' //true 而0===’abcdef ' false
具体文章请参考:https://www.cnblogs.com/Mrsm1th/p/6745532.html