define('FLAG','pwnhub{this_is_flag}');
if(strcmp($_GET['flag'],FLAG) == 0){
echo "success,flag:".FLAG;
}
脚本意思是get到的flag和FLAG的值相等,就可以得到FLAG,但我们都不知道flag值是什么,利用strcmp函数特点尝试使用数组绕过。令flag[]=xxx。
strcmp(string $str1,string $str2)
strcmp是比较两个字符串,如果str1<str2 则返回<0 如果str1大于str2返回>0 如果两者相等 返回0。
strcmp比较的是字符串类型,如果强行传入其他类型参数,会出错,出错后返回值0,正是利用这点进行绕过。
flag[]=xxx 》》 strcmp比较出错 》》返回null 》》null==0 》》条件成立得到flag