如何進行sql注入

所謂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”兩種經典注入方法。這些方式均是對一些間接關聯且能取得回應的問題進行提問,進而通過響應信息推斷出想要信息,然后進行攻擊。

? 版權聲明
THE END
喜歡就支持一下吧
點贊14 分享