SQL注入攻擊是黑客攻擊數(shù)據(jù)庫的常見手段之一,隨著B/S模式應(yīng)用開發(fā)的發(fā)展,越來越多的程序員開始使用這種模式來編寫應(yīng)用程序。然而,由于程序員的水平和經(jīng)驗參差不齊,很大一部分程序員在編寫代碼時沒有對用戶輸入數(shù)據(jù)的合法性進行判斷,使得應(yīng)用程序存在安全隱患。用戶可以提交數(shù)據(jù)庫查詢代碼,根據(jù)程序返回的結(jié)果獲得一些他想知道的數(shù)據(jù),這就是所謂的SQL注入。
SQL注入攻擊是數(shù)據(jù)庫安全攻擊中的一種,可以通過數(shù)據(jù)庫安全防護技術(shù)進行有效防護,包括:數(shù)據(jù)庫掃描、數(shù)據(jù)庫加密、數(shù)據(jù)庫防火墻、數(shù)據(jù)脫敏、數(shù)據(jù)庫安全審計系統(tǒng)。由SQL注入攻擊引起的數(shù)據(jù)庫安全風險包括:刷庫、拖庫、撞庫。
總體思路·發(fā)現(xiàn) SQL 注入位置;
·判斷后臺數(shù)據(jù)庫類型;
·確定 XP_CMDSHELL 可執(zhí)行情況
·發(fā)現(xiàn) WEB 虛擬目錄
·上傳 ASP 木馬;
·得到管理員權(quán)限;
例子某個網(wǎng)站的登錄驗證的 SQL 查詢代碼為:
strSQL=“SELECT*FROMusersWHERE(name=‘”+userName+“‘)and(pw=‘”+passWord+”‘);”
惡意填入
userName=“1’OR‘1’=’1”;
與
passWord=“1′OR‘1’=’1”;
時,將導(dǎo)致原本的 SQL 字符串被填為
strSQL=“SELECT*FROMusersWHERE(name=‘1’OR‘1’=’1′)and(pw=‘1’OR‘1’=’1′);”
也就是實際上運行的 SQL 命令會變成下面這樣的
strSQL=“SELECT*FROMusers;”
因此達到無賬號密碼,亦可登錄網(wǎng)站。所以 SQL 注入攻擊被俗稱為黑客的填空游戲。