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