1. strcmp字符串比较
strcmp() 函数比较两个字符串,且对大小写敏感
语法:strcmp(string1,string2);
strcmp函数比较字符串的本质是将两个变量转换为ascii,然后进行减法运算,然后根据运算结果来决定返回值。
0 - 如果两个字符串相等
<0 - 如果 string1 小于 string2
>0 - 如果 string1 大于 string2
define('FLAG', 'flag{1}');
if (isset($_GET['flag'])) {
if (strcmp($_GET['flag'], FLAG) == 0) {
echo "success, flag:" . FLAG;
}
}
如果一个数值和字符串进行比较的时候,会将字符串转换成数值,strcmp就会比较出错,返回NULL,NULL==0成立,得到flag
GET传入flag[]=1就能绕过了
2. md5碰撞
define('FLAG', 'flag{2}');
if (isset($_GET['a']) and isset($_GET['b'])) {
if ($_GET['a'] != $_GET['b']
&& md5($_GET['a']) == md5($_GET['b'])