打开题目,是一段php代码。
进行代码审计,发现,该程序以get方式接收a,b两个变量。而flag由两部分组成,分别受制于a,b。
对于a,当$a==0并且$a时会输出flag。对于b,当is_numeric($b) 不成立且b>1234使输出。
虽然看似不太可能,但php中用==进行判断(又叫弱类型比较)时会自动进行类型转换,而产生很多问题。
对于纯字母的字符串与数字比较时,会将字母视为0,如‘abc’==0
而在字母前存在数字时,它的值仅等于前面的数字,如‘111a’==111
但是is_number(‘111a’)的返回值为否,以此我们可以对a,b进行构造:
a=a,b=9999a,即可得到flag
Cyberpeace{647E37C7627CC3E4019EC69324F66C7C}