sql 注入越過登入驗證例項

nintyuui發表於2021-09-09

根據我們提交的使用者名稱和密碼被合成到SQL查詢語句當中之後是這樣的:select * from users where username='user' and password='password'。很明顯,使用者名稱和密碼都和我們資料庫給出的一樣,肯定能夠成功登陸。但是,如果我們輸入一個錯誤的使用者名稱或密碼呢?很明顯,肯定登入不了吧。恩,正常情況下是如此,但是對於有SQL隱碼攻擊漏洞的網站來說,只要構造個特殊的“字串”,照樣能夠成功登入。
比如:在使用者名稱輸入框中輸入:or 1=1#。密碼隨便輸入,這時候的合成後的SQL查詢語句為:select * from users where username='' or 1=1#' and password='password'。語義分析:使用者名稱驗證肯定為真(1=1),“#”在mysql中是註釋符,這樣井號後面的內容將被mysql視為註釋內容,這樣就不會去執行了。這樣不論你密碼輸入什麼都能登入!(因此需要防止sql語句註冊,如何防止,請看下一篇手記:為什麼使用PreparedStatement)

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/3209/viewspace-2798322/,如需轉載,請註明出處,否則將追究法律責任。

相關文章