適用範圍:
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就被當做注釋而忽略掉了,登陸成功!
sql注入攻擊
使用者可以利用向php表單輸入的資料完成對mysql的注入攻擊。例如我的查詢是 insert table into xx values 使用者名稱 號碼 檔案 0 在使用者輸入時最後一位只能是0.使用者不需要輸入 這時使用者在號碼處輸入 10000 x.gif.1 雙連字元後加乙個空格是sql的注釋...
sql注入攻擊
簡單判斷是否有漏 www.abc.asp?id 1,www.abc.asp?id 1 and 1 1 kali 檢視所有的資料庫 sqlmap u www.abc.asp?id 1 dbs current user 是否有漏洞會有相應資訊 檢視所有的表 sqlmap u www.abc.asp?id...
注入攻擊之sql注入
在1998年,一位名為rfp的黑客發表了一篇題為 nt web technology vulnerabilities 的文章 注入攻擊的兩個條件 1 使用者能夠克制資料的輸入 在這裡,使用者能夠控制變數 2 原本要執行的 憑藉了使用者的輸入 一般輸入乙個 單引號就能引起執行查詢語句的語法錯誤,有些伺...