密碼安全

手法

簡易弱密碼範例

保存為index.php

<form>
  <div>
    Username: <br>
    <input type="text" name="id" required>
  </div>

  <div>
    Password: <br>
    <input type="password"name="pw" required>
  </div>

    <button type="submit">Login</button>
</form>

<?php
$id = $_GET['id'simple-login.php];
$pw = $_GET['pw'];

if (isset($id) && isset($pw)) {
  if ($id === "user" && $pw === "pass")
    echo "hi, user";
  else
    echo "Incorrect account or password";
}

?>

透過以下指令啟動php臨時伺服器

php -S 127.0.0.1:8080 -t ./

注意: 採用localhost可能會因為伺服器監聽的是IPv6導致無法正常連入。

現在連到剛剛建立的範例 應該可以看到登入表單。

暴力破解

字典檔

為了方便實驗,這邊建立兩個最小的弱密碼字典檔

user.txt

root
admin
user

pass.txt

root
admin
user
password
pass

hydra破解

透過hydra對前面的簡易弱密碼範例進行破解, 細節請自行參閱手冊。

hydra -L user.txt -P pass.txt 127.0.0.1 -s 8080 http-get-form "/index.php:id=^USER^&pw=^PASS^:Incorrect account or password"

雜項

Hash

處理密碼、簽章等CTF經常需要使用hash, 下面產生相關的hash值

echo -n '123456' | md5sum
echo -n '123456' | sha512sum  

注意: 請務必加上-n避免\n也被用於計算hash


Information Security