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

如何進行sql注入

May 18, 2019 am 10:14 AM
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”兩種經典注入法。這些方式都是對一些間接關聯且能取得回應的問題進行提問,進而透過回應訊息推斷出想要訊息,然後進行攻擊。

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

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

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Hibernate 框架中 HQL 和 SQL 的差異是什麼? Hibernate 框架中 HQL 和 SQL 的差異是什麼? Apr 17, 2024 pm 02:57 PM

HQL和SQL在Hibernate框架中進行比較:HQL(1.物件導向語法,2.資料庫無關的查詢,3.類型安全),而SQL直接操作資料庫(1.與資料庫無關的標準,2.可執行複雜查詢和資料操作)。

Oracle SQL中除法運算的用法 Oracle SQL中除法運算的用法 Mar 10, 2024 pm 03:06 PM

《OracleSQL中除法運算的用法》在OracleSQL中,除法運算是常見的數學運算之一。在資料查詢和處理過程中,除法運算可以幫助我們計算欄位之間的比例或得出特定數值的邏輯關係。本文將介紹OracleSQL中除法運算的用法,並提供具體的程式碼範例。一、OracleSQL中除法運算的兩種方式在OracleSQL中,除法運算可以用兩種不同的方式來進行

Oracle與DB2的SQL語法比較與區別 Oracle與DB2的SQL語法比較與區別 Mar 11, 2024 pm 12:09 PM

Oracle和DB2是兩個常用的關聯式資料庫管理系統,它們都有自己獨特的SQL語法和特性。本文將針對Oracle和DB2的SQL語法進行比較與區別,並提供具體的程式碼範例。資料庫連接在Oracle中,使用以下語句連接資料庫:CONNECTusername/password@database而在DB2中,連接資料庫的語句如下:CONNECTTOdataba

詳解MyBatis動態SQL標籤中的Set標籤功能 詳解MyBatis動態SQL標籤中的Set標籤功能 Feb 26, 2024 pm 07:48 PM

MyBatis動態SQL標籤解讀:Set標籤用法詳解MyBatis是一個優秀的持久層框架,它提供了豐富的動態SQL標籤,可以靈活地建構資料庫操作語句。其中,Set標籤是用來產生UPDATE語句中SET子句的標籤,在更新作業中非常常用。本文將詳細解讀MyBatis中Set標籤的用法,以及透過具體的程式碼範例來示範其功能。什麼是Set標籤Set標籤用於MyBati

SQL中的identity屬性是什麼意思? SQL中的identity屬性是什麼意思? Feb 19, 2024 am 11:24 AM

SQL中的Identity是什麼,需要具體程式碼範例在SQL中,Identity是一種用於產生自增數字的特殊資料類型,它常用於唯一識別表中的每一行資料。 Identity欄位通常與主鍵列搭配使用,可確保每筆記錄都有獨一無二的識別碼。本文將詳細介紹Identity的使用方式以及一些實際的程式碼範例。 Identity的基本使用方式在建立表格時,可以使用Identit

Springboot+Mybatis-plus不使用SQL語句進行多表新增怎麼實現 Springboot+Mybatis-plus不使用SQL語句進行多表新增怎麼實現 Jun 02, 2023 am 11:07 AM

在Springboot+Mybatis-plus不使用SQL語句進行多表添加操作我所遇到的問題準備工作在測試環境下模擬思維分解一下:創建出一個帶有參數的BrandDTO對像模擬對後台傳遞參數我所遇到的問題我們都知道,在我們使用Mybatis-plus中進行多表操作是極其困難的,如果你不使用Mybatis-plus-join這一類的工具,你只能去配置對應的Mapper.xml文件,配置又臭又長的ResultMap,然後再寫對應的sql語句,這種方法雖然看上去很麻煩,但具有很高的靈活性,可以讓我們

SQL出現5120錯誤怎麼解決 SQL出現5120錯誤怎麼解決 Mar 06, 2024 pm 04:33 PM

解決方法:1、檢查登入使用者是否具有足夠的權限來存取或操作該資料庫,確保該使用者俱有正確的權限;2、檢查SQL Server服務的帳戶是否具有存取指定檔案或資料夾的權限,確保該帳戶具有足夠的權限來讀取和寫入該文件或資料夾;3、檢查指定的資料庫文件是否已被其他進程打開或鎖定,嘗試關閉或釋放該文件,並重新運行查詢;4、嘗試以管理員身份運行Management Studio等等。

如何使用SQL語句在MySQL中進行資料聚合和統計? 如何使用SQL語句在MySQL中進行資料聚合和統計? Dec 17, 2023 am 08:41 AM

如何使用SQL語句在MySQL中進行資料聚合和統計?在進行資料分析和統計時,資料聚合和統計是非常重要的步驟。 MySQL作為一個功能強大的關聯式資料庫管理系統,提供了豐富的聚合和統計函數,可以很方便地進行資料聚合和統計操作。本文將介紹使用SQL語句在MySQL中進行資料聚合和統計的方法,並提供具體的程式碼範例。一、使用COUNT函數進行計數COUNT函數是最常用

See all articles