sql注入攻擊登入頁面
阿新 • • 發佈:2019-02-18
適用範圍:
1. 如果一個系統是通過
SELECT * FROM accounts WHERE username='admin' and password = 'password'這種顯式的SQL來進行登陸校驗, 也就是執行這個SQL語句,如果資料庫中存在使用者名稱為admin, password為password的使用者,就登陸成功,否則就登陸失敗。 2. 系統沒有對使用者輸入進行全面的過濾 3. 系統後臺使用的是MYSQL資料庫 4. 系統中存在一個user name為admin的使用者 攻擊原理: 利用MYSQL的註釋功能,也就是"/*", mysql執行SQL指令碼時,如果遇到/*標示符,就會把之以後的SQL當做註釋而不會執行, 正常情況下使用者在使用者名稱框內輸入"admin",在password框內輸入"password", 後臺執行的SQL語句就為 SELECT * FROM accounts WHERE username='admin' and password = 'password' 但是如果在使用者名稱框內輸入"admin' AND 1=1 /*", 在密碼框內輸入任意字串,那麼後臺執行的SQL就為 SELECT * FROM accounts WHERE username='admin' AND 1=1 /* and password = 'aa', 可以看到資料庫實際執行的SQL為 SELECT * FROM accounts WHERE username='admin' AND 1=1, 而/*後面的SQL就被當做註釋而忽略掉了,登陸成功!