1. 程式人生 > >sql注入攻擊登入頁面

sql注入攻擊登入頁面

適用範圍:

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就被當做註釋而忽略掉了,登陸成功!