1. 程式人生 > >實驗吧-false writeup

實驗吧-false writeup

<?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>'; ?>

方法1: md5碰撞
方法2: 如果把這兩個欄位構造為陣列,如:?name[]=a&password[]=b,這樣在第一處判斷時兩陣列確實是不同的,但在第二處判斷時由於sha1()函式無法處理陣列型別,將報錯並返回false,if 條件成立,獲得flag。