首頁 >資料庫 >SQL >如何進行sql注入

如何進行sql注入

(*-*)浩
(*-*)浩原創
2019-05-18 10:14:5326603瀏覽

所謂SQL注入,就是透過把SQL指令插入Web表單提交或輸入網域或頁面請求的查詢字串,最終達到欺騙伺服器執行惡意的SQL指令。

如何進行sql注入

具體來說,它是利用現有應用程序,將(惡意的)SQL命令注入到後台資料庫引擎執行的能力,它可以透過在Web表單中輸入(惡意)SQL語句得到一個有安全漏洞的網站上的資料庫,而不是依照設計者意圖去執行SQL語句。例如先前的許多影視網站外洩VIP會員密碼大多就是透過WEB表單遞交查詢字元暴出的,這類表單特別容易受到SQL注入式攻擊。

SQL注入技術

強制產生錯誤

對資料庫類型、版本等資訊進行識別是此類型攻擊的動機所在。它的目的是收集資料庫的類型、結構等資訊為其他類型的攻擊做準備,可謂是攻擊的一個預備步驟。利用應用程式伺服器傳回的預設錯誤訊息而取得漏洞資訊。

採用非主流通道技術

除HTTP回應外,能透過通道取得數據,然而,通道大都依賴與資料庫支援的功能而存在,所以這項技術不完全適用於所有的資料庫平台。 SQL注入的非主流通道主要有E-mail、DNS以及資料庫連接,基本概念為:先對SQL查詢打包,然後藉助非主流通道將資訊回饋至攻擊者。

使用特殊的字元

不同的SQL資料庫有許多不同是特殊字元和變量,透過某些配置不安全或過濾不細緻的應用系統能夠取得某些有用的信息,從而對進一步攻擊提供方向。

使用條件語句

此方式具體可分為基於內容、基於時間、基於錯誤三種形式。一般在經過常規訪問後加上條件語句,根據資訊回饋來判定被攻擊的目標。

利用預存程序

透過某些標準預存程序,資料庫廠商對資料庫的功能進行擴充的同時,系統也可與進行互動。部分預存程序可以讓使用者自行定義。透過其他類型的攻擊收集到資料庫的類型、結構等資訊後,便能夠建構執行預存程序的命令。這種攻擊類型往往能達到遠端命令執行、特權擴張、拒絕服務的目的。

避開輸入過濾技術

雖然對於通常的編碼都可利用某些過濾技術進行SQL注入防範,但是鑑於此種情況下也有許多方法避開過濾,一般可達到此目的的技術手段包括SQL註解和動態查詢的使用,利用截斷,URL編碼與空字節的使用,大小寫變種的使用以及嵌套剝離後的表達式等等。藉由於此些手段,輸入構思後的查詢可以避開輸入過濾,從而攻擊者能獲得想要的查詢結果。

推斷技術

能夠明確資料庫模式、擷取資料以及識別可注入參數。此種方式的攻擊透過網站對使用者輸入的回饋訊息,對可注入參數、資料庫模式推斷,這種攻擊構造的查詢執行後獲得的答案只有真、假兩種。基於推斷的注入方式主要分為時間測定注入與盲注入兩種。前者是在註入語句裡加入語句諸如“waitfor 100”,按照此查詢結果出現的時間對注入能否成功和資料值範圍的推導進行判定;後者主要是“and l=l”、“and l= 2”兩種經典注入法。這些方式都是對一些間接關聯且能取得回應的問題進行提問,進而透過回應訊息推斷出想要訊息,然後進行攻擊。

以上是如何進行sql注入的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

相關文章

看更多