打开后是一段很简短的php代码,让我来剖析一下:
以get形式传入a,b的值,要求:a等于零还不能为0,b不能是数字但要大于1234.
那我们将传入a=abc&b=12345a(abc可替换为任意字符,==一个字符串和数字比较时,会把字符串转化成数字再比较。PHP转换规则是:若字符串以数字开头,则以开头字母为转换结果,若无则输出0。)
即可获得flag
这就需要一点点代码知识了。
php的弱类型比较:(以下内容来源于网络,来源不可考,侵删)
PHP是一种弱类型的语言,对于数字0和空字符串在进行布尔运算的时候都会转换为 false ;
== 会自动转换类型然后进行比较,比如字符串 '0' 和数字 0 比较的时候会返回true;
而对于 === 则会同时比较类型和变量值,若类型不相同也不会返回true;
is_numeric() 函数用于检测类型是否为数字或数字字符串
所以当a为0且不会转换为false的就是字符串a。
当一个字符串当作一个数值来取值,其结果和类型如下:
如果该字符串没有包含’.’,’e’,’E’并且其数值值在整形的范围之内,该字符串被当作 int 来取值,其他所有情况下都被作为 float 来取值,
该字符串的开始部分决定了它的值,如果该字符串以合法的数值开始,则使用该数值,否则其值为0
如:
"0e11"=="0e22"比较的时候,会将这类字符串识别为科学技术法的数字,所以0 的多少次方
都是零。
"A"==0 比较的时候,会将A 转化成数值,强制转化,由于A 是字符串,转化的结果是0 自然
和0 相等。
"1A"==1 比较的时候会将1A 转化成为数值1;但“A1“==1 结果却为false,也就是"A1"转化
成了0
以及:
php 弱类型总结 - Mrsm1th - 博客园 PHP弱类型_ITmincherry的博客-CSDN博客_php弱类型