XX:php是世界上最好的语言!
我:看不懂啊…
(纯属娱乐,Java党勿喷)
题解部分
php代码:
<?php
show_source(__FILE__);
include("config.php");
$a=@$_GET['a'];
$b=@$_GET['b'];
if($a==0 and $a){
echo $flag1;
}
if(is_numeric($b)){
exit();
}
if($b>1234){
echo $flag2;
}
?>
意思都能看明白:
flag被分成了两个部分。就是当a==0且a为真的时候输出flag1,当b>1234的时候输出flag2。这里b还有一个限制,is_numeric(b)表示b为数字或者数字字符串的时候,is_numeric的值为真,此时程序退出,也就是不能让b为数字或者数字字符串。
php中的弱类型比较
php中有两种比较符号
=== 会同时比较字符串的值和类型
== 会先将字符串换成相同类型,再作比较,属于弱类型比较
php一个数字和一个字符串进行比较或者进行运算时,PHP会把字符串转换成数字再进行比较。PHP转换的规则的是:若字符串以数字开头,则取开头数字作为转换结果,若无则输出,纯字母被转换为0。若字符串以字母开头,也输出0
也就是是说a=abcde(随便一个字母即可绕过第一个条件)
b的限制条件是不能让b为纯字符串,且b>1234,令b=2020wish
注:php中的URL后缀以/?开头,a和b之间使用&连接
Cyberpeace{647E37C7627CC3E4019EC69324F66C7C}
附:
URL中易出现的特殊字符
- + 表示空格(在URL中不能使用空格)
- / 分隔目录和子目录
- ?分隔实际的URL和参数
- # 表示书签
- & URL指定参数间的分隔符
- = URL中指定参数的值