mysql注入漏洞语句,web安全之sql注入漏洞
概念
通過把SQL命令插入到Web表單提交或輸入域名或頁面請求的查詢字符串,最終達到欺騙服務器執(zhí)行惡意的SQL命令。通俗地講,它是利用現(xiàn)有應用程序,將(惡意)的SQL命令注入到后臺數(shù)據(jù)庫引擎執(zhí)行的能力,它可以通過在Web表單中輸入(惡意)SQL語句得到一個存在安全漏洞的網(wǎng)站上的數(shù)據(jù)庫,而不是按照設計者意圖去執(zhí)行SQL語句。
注入流程簡介
注入流程
尋找注入點,構(gòu)建特殊的數(shù)據(jù)庫查詢語句
系統(tǒng)頁面可注入?yún)?shù)的地方一般有如下幾個方面:
Get參數(shù)觸發(fā)SQL注入
POST參數(shù)觸發(fā)SQL注入
Cookie觸發(fā)SQL注入
其他參與SQL執(zhí)行的輸入都有可能進行SQL注入
數(shù)據(jù)庫引擎執(zhí)行拼接后的SQL語句
一旦參數(shù)被拼接成一個完整的SQL語句,數(shù)據(jù)庫引擎就會執(zhí)行SQL語句。
數(shù)據(jù)庫返回信息
被執(zhí)行后的SQL語句通過數(shù)據(jù)庫引擎返回給服務端(瀏覽器等)。
獲取數(shù)據(jù)庫相關(guān)信息
攻擊者利用注入的SQL語句,獲取想要獲取的信息。
入侵破壞
一旦獲取到核心數(shù)據(jù),攻擊者就有可能參與一系列的入侵破壞,如:
頁面篡改
網(wǎng)站掛馬
修改后臺數(shù)據(jù)等。
原理
首先來看一下下面這樣一個SQL語句:
"select username,password from user where username = '"+username+"'and password = '"+password+"'"
此SQL語句是根據(jù)用戶名和密碼來從數(shù)據(jù)庫中獲取記錄,有用戶名和密碼作為雙重驗證。如果此時沒有對用戶輸入的username加以判斷和字符過濾,將username輸入成如下字符:
admin‘ #
那么此時拼接后的完整SQL語句將變?yōu)槿缦滦问?#xff1a;
"select username,password from user where username = 'admin' #'and password = '123456'"
我們知道,在MySQL中,#是注釋的意思,這樣對password的限制就徹底失效了,只要數(shù)據(jù)庫中有admin這條記錄,數(shù)據(jù)庫就會有數(shù)據(jù)返回。這樣就背離了我們想要執(zhí)行目標SQL語句的初衷。這就是典型的SQL注入。簡單來說,構(gòu)成SQL注入漏洞的條件有二:
控制輸入
用戶能夠控制輸入,系統(tǒng)沒有對輸入做判斷和限制,信任用戶所有的輸入。
拼接SQL
將用戶輸入的參數(shù)拼接成了一個完整的SQL語句。
場景
進行SQL注入的場景很多,一切用戶可控輸入的地方,都有可能造成SQL注入。
場景
危害
SQL注入漏洞常見且危害性大,具體表現(xiàn)為:
繞過登錄驗證
使用萬能密碼登錄網(wǎng)站后臺等
獲取敏感數(shù)據(jù)
獲取網(wǎng)站管理員帳號、密碼等
文件系統(tǒng)操作
列目錄,讀取、寫入文件等
注冊表操作
讀取、寫入、刪除注冊表等
執(zhí)行系統(tǒng)命令
遠程執(zhí)行命令
防御措施
使用預編譯,綁定變量(推薦)。
檢查數(shù)據(jù)類型。
過濾特殊字符和語句。
頁面不錯誤回顯。
總結(jié)
以上是生活随笔為你收集整理的mysql注入漏洞语句,web安全之sql注入漏洞的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 感谢的锦旗用语大全428条
- 下一篇: oracle数据库硬恢复,Oracle数