xctf-simple_php

打开页面发现是一段PHP代码

20190828101851.png

简单审计下代码,发现需要以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

                             https://www.jianshu.com/p/90d235d4f745

                             https://www.jb51.net/article/93447.htm

猜你喜欢

转载自www.cnblogs.com/boost7-safe/p/12904388.html