源碼:php
<?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。數組