点进去,代码审计
<?php
if(isset($_GET['v1']) && isset($_GET['v2']) && isset($_GET['v3'])){
$v1 = $_GET['v1'];
$v2 = $_GET['v2'];
$v3 = $_GET['v3'];
if($v1 != $v2 && md5($v1) == md5($v2)){
if(!strcmp($v3, $flag)){
echo $flag;
}
}
}
?>
直接想法,MD5碰撞
因为v1,v2加密前的值不相同,加密后的相同
那么按照这种想法,v3这里就很难想了
另一种思路是,根据md5函数传入数组时返回错误使得条件成立
也就是v1[]=1,v2[]=2
这样保证了第一个if条件句的成立
下面的条件句同样传入一个数组,使得strcmp函数返回的结果为零获得flag