源码:
<?php
if (isset($_GET['name']) and isset($_GET['password'])) {
if ($_GET['name'] == $_GET['password'])
echo '<p>Your password can not be your name!</p>';
else if (sha1($_GET['name']) === sha1($_GET['password']))
die('Flag: '.$flag);
else
echo '<p>Invalid password.</p>';
}
else{
echo '<p>Login first!</p>';
?>
从源码中看出需要name和password不相等,但是他们经过sha1算法加密后需要相等,而且是三等号比较,这就不仅要求值相同,还要保证是同一种类型。首先想到bool类型,而sha1和md5都无法处理数组的情况,所以尝试让sha1处理数组,返回两个false,自然地就相同了。
由此,获取了flag。