code.txt
if(isset($_GET['v1']) && isset($_GET['v2']) && isset($_GET['v3'])){ //get请求v1,v2,v3$v1 = $_GET['v1'];$v2 = $_GET['v2'];$v3 = $_GET['v3'];if($v1 != $v2 && md5($v1) == md5($v2)){ // v1 != v2 && md5(v1) == md5(v2)if(!strcmp($v3, $flag)){ // strcmp二进制安全字符串比较 str1 小于 str2 返回 < 0; 如果 str1 大于 str2 返回 > 0;如果两者相等,返回 0。echo $flag; //v3的值等于flag的值就输出flag}}
}
?>
?v1=QNKCDZO&v2=s878926199a&v3[]=4
strcmp的绕过,我们只需要定义v3为数组或则全局变量object就可以了,因为报错为0,说明两个值相等。