傳說,SQL注入是黑客對數(shù)據(jù)庫進行攻擊的常用手段,今天就來介紹一下SQL注入。
01 SQL注入介紹
SQL注入是網(wǎng)站存在最多也是最簡單的漏洞,主要原因是程序員在開發(fā)用戶和數(shù)據(jù)庫交互的系統(tǒng)時沒有對用戶輸入的字符串進行過濾,轉(zhuǎn)義,限制或處理不嚴謹,導(dǎo)致用戶可以通過輸入精心構(gòu)造的字符串去非法獲取到數(shù)據(jù)庫中的數(shù)據(jù)。本文以免費開源數(shù)據(jù)庫MySQL為例。
02 SQL注入舉例
以萬能密碼場景舉例說明:
這里用戶登錄用的SQL語句為:
SELECT * FROM user WHERE username=‘admin’ AND password=‘passwd’;
此處admin和passwd分別為用戶輸入的用戶名和密碼,如果程序沒有對用戶輸入的用戶名和密碼做處理,就可以構(gòu)造萬能密碼成功繞過登錄驗證,如用戶輸入‘or 1=1#, SQL語句將變?yōu)椋?/p>
SELECT * FROM user WHERE username=’‘or 1=1#’ AND password=‘’;
‘’or 1=1為TRUE,#注釋掉后面的內(nèi)容,所以查詢語句可以正確執(zhí)行。這樣就繞過了后臺的驗證,達到注入的目的。
03 SQL注入分類
事實上SQL注入有很多種,按數(shù)據(jù)類型可以分為數(shù)字型、字符型和搜索型,按提交方式可分為GET型,POST型,Cookie型和HTTP請求頭注入,按執(zhí)行效果有可以分為報錯注入、聯(lián)合查詢注入、盲注和堆查詢注入,其中盲注又可分為基于bool的和基于時間的注入。
SQL盲注,與一般注入的區(qū)別在于,一般的注入攻擊者可以直接從頁面上看到注入語句的執(zhí)行結(jié)果,而盲注時攻擊者通常是無法從顯示頁面上獲取執(zhí)行結(jié)果,甚至連注入語句是否執(zhí)行都無從得知,因此盲注的難度要比一般注入高。
目前網(wǎng)絡(luò)上現(xiàn)存的SQL注入漏洞大多是SQL盲注。
-
SQL
+關(guān)注
關(guān)注
1文章
751瀏覽量
43984 -
安全測試
+關(guān)注
關(guān)注
0文章
24瀏覽量
8681
發(fā)布評論請先 登錄
相關(guān)推薦
評論