1. 程式人生 > 資料庫 >【從入門到放棄系列學習筆記8】web應用安全基礎整理-SQL注入漏洞利用

【從入門到放棄系列學習筆記8】web應用安全基礎整理-SQL注入漏洞利用

一、SQL簡介

  結構化查詢語言(structured Query language),是一種特殊的程式語言,用於資料庫中的標準資料查詢。

  是關係型資料庫的查詢語言,例如mysql,oracle,sqlserver都要使用SQL。

       問:什麼是關係型資料庫?

二、漏洞原理

  針對SQL注入的攻擊行為可描述為通過使用者可控引數中注入SQL語法,破壞原有SQL結構,達到編寫程式時意料之外結果的攻擊行為。

  其原因可歸結為以下兩個原因疊加造成的:

  1. 程式編寫在處理程式和資料庫互動時,使用字串拼接的方式構造SQL語句。

  2. 未對使用者可控引數進行足夠的過濾便將引數內容拼接進SQL語句中。

 

三、注入點可能存在的位置

  根據sql注入原理,在使用者“可控引數”中注入SQL語法,也就是說Web應用在獲取使用者資料的地方,只要帶入資料庫查詢,都有存在SQL注入的可能。

  通常有:

    • GET資料
    • POST資料
    • HTTP頭部
    • Cookie資料

  常見GPC,只要和資料庫有互動的地方

四、漏洞注入的危害

  有多種資訊會被獲取,如管理員後臺密碼,從而脫取資料庫中內容(脫庫)。

  如果資料庫本身存在缺陷,獲取資料庫許可權有問題,那麼攻擊者可以通過SQL注入漏洞直接獲取webshell或伺服器系統許可權。

 

五、SQL注入的分類

  SQL注入漏洞根據不同的標準,有不同的分類。但從資料型別來分,可以分為數字型或字元型。

  • 數字型注入:注入點的資料,拼接語句中是以數字型出現的,即資料兩邊沒有被單引號、雙引號包括。
  • 字元型注入:根據注入手法,分為以下幾類
    • 可聯合查詢注入(聯合查詢)
    • 報錯型注入(報錯注入)
    • 布林型盲注入(布林盲注)
    • 基於時間延遲注入(延時注入)
    • 可多語句查詢注入

  

六、SQL注入點的判斷

  

七、

·