# Authentication Lab8
這題二階段驗證(2FA)邏輯錯誤,題目名稱就叫 "2FA broken logic",屬於認證機制設計錯誤的變種,可以用自己的帳號發起請求,卻偷偷指定「Carlos」來產生驗證碼,接著爆破那組碼進行登入。
一樣先進入網站登入帳密去抓 F2A 的請求封包。



接著登出帳號,並去剛剛攔截的封包,把 wiener 改成另一位使用者,這樣就會強制後端為 carlos 產生一組 2FA 驗證碼(就像偷幫他按了登入一樣)。

回到` /login`,再次用 wiener 登入,然後進入 `/login2`,輸入一組錯誤的驗證碼讓流程卡住。

這是我們將登入的封包拿去爆破 F2A 的數字。



發現有一個 302 狀態碼的結果,去複製他的 URL 並前往。



:::info
### 為什麼這樣會中?
因為這個系統沒有用 session 綁定驗證使用者,卻讓前端可以自定 `verify=carlos`,你就可以代替他產生並猜測驗證碼。
這是邏輯設計錯誤,尤其常見於把 2FA 當作二段表單處理、但沒驗證誰在使用的情況下。
:::
---