驗證碼繞過思路總結
阿新 • • 發佈:2022-05-09
總結了一下SRC中常見的驗證碼繞過思路
1. 驗證碼使用後不會銷燬
驗證碼可重複使用,導致可爆破賬戶
2. 生成驗證碼字符集可控
驗證碼可控,可自行選擇驗證碼(案例:ThinkCMF 1.X-2.X)
3. 驗證碼存放在暴露位置
比如驗證碼藏到cookie裡面,或者藏到編碼後的某些值裡面,藏到圖片的位元組裡面等(有時也會進行加密編碼藏起來)
4. 驗證碼為空,或8888,0000等可繞過
驗證碼為空,是因為程式邏輯錯誤,驗證碼驗證一次之後本該退出此次驗證碼,生成新的,由於沒有生成新的繼續驗證密碼是否正確
8888,0000等為開發程式時設定的萬能密碼,方便測試,有時候會忘記刪除
1111 2222 3333 4444 5555 6666 7777 8888 9999
5. 其他對比後驗證碼未銷燬
僅僅校驗了密碼欄位和驗證碼,使用者名稱並未校驗,那麼這裡就可以輸入一個弱密碼(如123456,111111,123123等等),然後反向去遍歷使用者,獲取正確的口令。
6. 驗證碼尺寸可控
該問題被人們廣為關注源於PHPcms早期版本的後臺登入驗證碼尺寸可控,可用於DDoS。
7. 驗證碼過於簡單,可輕易機器識別
如良精南方都可識別
8. 待補充...
修復方法:
驗證碼設定為6位並設定超時(一分鐘)失效。
建議修改應用程式原始碼,在登入模組中增加對驗證碼正確性的驗證,並且要保證在驗證使用者名稱、密碼或其他資訊之前首先驗證驗證碼的正確性。