SQL注入是什么意思?
SQL注入是什么意思?
SQL注入即是指web應用程序對用戶輸入數據的合法性沒有判斷或過濾不嚴,攻擊者可以在web應用程序中事先定義好的查詢語句的結尾上添加額外的SQL語句,在管理員不知情的情況下實現非法操作,以此來實現欺騙數據庫服務器執行非授權的任意查詢,從而進一步得到相應的數據信息

SQL注入攻擊的類型
SQL注入攻擊可以通過多種方式執行。在選擇特定攻擊方法之前,攻擊者可能會觀察系統的行為。
帶內注入
這是典型的攻擊,攻擊者可以通過相同的通信通道發起攻擊并獲得結果。這是通過兩種帶內技術完成的:
● 基于錯誤的SQL注入:從顯示的錯誤消息中獲取有關數據庫的信息
● 基于聯合的SQL注入:依賴于攻擊者能夠將UNION ALL被盜信息的結果與合法結果連接起來。
這兩種技術都依賴于攻擊者修改應用程序發送的SQL,以及瀏覽器中顯示的錯誤和返回的信息。如果應用程序開發人員或數據庫開發人員無法正確地參數化他們在查詢中使用的值,那么它會成功。兩者都是試錯法,可以檢測到錯誤。
盲注入
也稱為推理SQL注入,盲注入攻擊不會直接從目標數據庫中顯示數據;相反,攻擊者會仔細檢查行為中的間接線索。HTTP響應中的詳細信息,某些用戶輸入的空白網頁以及數據庫響應某些用戶輸入需要多長時間,這些都可以是線索,具體取決于攻擊者的目標。他們還可以指向攻擊者嘗試的另一個SQLi攻擊途徑。
帶外注入
這種攻擊有點復雜,當攻擊者無法在單個直接查詢 – 響應攻擊中實現其目標時,攻擊者可能會使用此攻擊。通常,攻擊者會制作SQL語句,這些語句在呈現給數據庫時會觸發數據庫系統創建與攻擊者控制的外部服務器的連接。以這種方式,攻擊者可以收集數據或可能控制數據庫的行為。
二階注入就是一種帶外注入攻擊。在這種情況下,攻擊者將提供SQL注入,該注入將由數據庫系統的單獨行為存儲和執行。當二級系統行為發生時(它可能類似于基于時間的作業或由其他典型管理員或用戶使用數據庫觸發的某些事情)并且執行攻擊者的SQL注入,那就是當“伸出”到系統時攻擊者控制發生了。