Web5:SQL注入-一些繞過過濾機制的技術

Web5:SQL注入-一些繞過過濾機制的技術

1.截斷查詢內容

如果您想忽略查詢中的腳本。例如,對於下面的處理,查詢需要條件 active=1 但我們可以註解 (--, -- -, -+, #, /*, /**/, // , ;%00...) 和忽略它。在挖掘時,我們常常不知道查詢的剩餘內容是做什麼的,所以在這種情況下使用註釋是非常有效的。

Web5:SQL注入-一些繞過過濾機制的技術

評論後,我們的查詢變成:

Web5:SQL注入-一些繞過過濾機制的技術

2.繞過關鍵字過濾

A。內嵌評論

內嵌註解可以非常有效地繞過空白過濾。您可以使用以下字元繞過空格過濾:/**/、%20、%09、%0a、%0b、%0c、%0d、%a0)。例如:

Web5:SQL注入-一些繞過過濾機制的技術

或繞過關鍵字過濾(MySql 可用)。下面的例子中,union和password關鍵字在黑名單中,因此被屏蔽了,我們可以透過以下方式繞過:

Web5:SQL注入-一些繞過過濾機制的技術

b.替換關鍵字

在利用SQL注入時,我們經常使用關鍵字,例如:union、select、information_schema...在許多情況下,程式設計師只需替換這些關鍵字:

Web5:SQL注入-一些繞過過濾機制的技術

我們很容易看出上面的處理程式碼是缺少的。如果只是模式匹配,繞過就非常簡單。讓我們區分大小寫,其中大寫和小寫字母的解釋不同。

現在不要使用關鍵字:

select, union…

我們將使用:

SeLEcT, UniOn…

這種繞過的基礎是資料庫管理系統不區分大小寫和大小寫關鍵字。

在某些情況下,Web 應用程式將過濾掉某些關鍵字的全部或部分(union、select...)。我們將繞過如下:

id=1+uniunionon+SeLselectecT+1,2,3-- -

在 Web 應用程式過濾掉 union 和 select 後,我們將得到正確的查詢,如下所示:

id=1+union+SeLecT+1,2,3-- -

C。字元編碼

當WAF(網路應用程式防火牆)封鎖關鍵字時,我們可以透過對關鍵字進行編碼來繞過。許多WAF應用程式只會對查詢進行一次解碼並過濾掉黑名單中的關鍵字,然後讓我們對請求進行兩次編碼,這樣在這種情況下就可以繞過它。

Web5:SQL注入-一些繞過過濾機制的技術

3.繞過塊單雙引號

- 在具體了解此繞過之前,讓我們先看一個範例。

Web5:SQL注入-一些繞過過濾機制的技術

在這種情況下,我們在資料庫中有一個名為 users 的表。接下來的工作是知道表中的列名以獲取其資訊。如上面的查詢所示,我們使用條件:table_name='users'。但是如果單引號(')和雙引號(")都被WAF屏蔽了,我們就不能再使用'users'或"users"了。那麼如何解決這個問題呢?內建的資料庫系統給我們提供了一個功能:很好地解決了這個問題,這就是CHAR()函數(對於Oracle來說是CHR())。例如,在上面的查詢中我們將通過以下方式繞過它:

Web5:SQL注入-一些繞過過濾機制的技術Web5:SQL注入-一些繞過過濾機制的技術

PHP 程式設計師非常熟悉addslashes() 函數。 addslashes()函數具有在特殊字元前面加上單引號(')、雙引號(")、反斜線(\)、NUL(空位元組)字元「\」等特殊字元的作用,以協助資料庫管理系統。處理包含這些字元的字串時沒有困難和混亂嗎?因此,當我們想根據腳本注入查詢時:name='someName'或'1'='1'——結果不再是我們所期望的。

然而,有一種技術可以繞過addslashes()函數來注入單引號字元(')。該技術已經公開了相當長的時間,並且實現該技術相當困難,因為它與應用於網站的編碼風格相關。

4.繞過錯誤“illegal mix of collat​​ion for operation UNION”

在某些管理系統中(常見於MySql),當資料庫和表格已經設定了排序規則時,使用UNION關鍵字時,會報錯「illegal mix of collat​​ion for operation UNION」。設定排序規則可能是由於資料庫設計者的意圖,也可能是由於 MySql 的預設值。在使用union的情況下,我們必須確保每個欄位中的選擇值條件必須定義對應的程式碼類型。在我看來,這個錯誤很常見,尤其是對於運行 Apache MySql 的 CMS。人們可以在以下位置了解更多:http://bugs.mysql.com/bug.php?id=57926。
這種情況下我們可以使用一些方法來轉換為適當的編碼類型。

例如以下情況:

Web5:SQL注入-一些繞過過濾機制的技術

例如,在上面的查詢中,如果列 1 的排序規則設定為 Unicode-UTF8 或 _latin1,則從列 2 中選取的內容必須轉換為對應的程式碼。我們可以如下強制樣式:

Web5:SQL注入-一些繞過過濾機制的技術

我們看到這種繞過方法的一個缺點:我們必須知道整理後的程式碼是_latin1。在我看來,繞過它的更好方法是使用 hex 和 unhex 編碼和解碼函數。

Web5:SQL注入-一些繞過過濾機制的技術

還有許多其他函數可以用來代替 hex 和 unhex。


什麼是惡意軟體 HackTool:Win32/Keygen?如何去除?

什麼是惡意軟體 HackTool:Win32/Keygen?如何去除?

您是否掃描過您的設備並發現它感染了 HackTool:Win32/Keygen?在您使用破解或金鑰產生器啟動進階軟體後,Windows Defender 可能會自動警告您有關此惡意軟體的存在。

在 Windows 10 上建立備份和還原點(Restore Point)的說明

在 Windows 10 上建立備份和還原點(Restore Point)的說明

探索如何在Windows 10上建立和管理還原點,這是一項有效的系統保護功能,可以讓您快速還原系統至先前狀態。

在 Windows 10 中開啟裝置管理員的 15 種方法

在 Windows 10 中開啟裝置管理員的 15 種方法

您可以使用以下 15 種方法輕鬆在 Windows 10 中開啟<strong>裝置管理員</strong>,包括使用命令、捷徑和搜尋。

Windows「顯示桌面」的 10 種超快速方法

Windows「顯示桌面」的 10 種超快速方法

很多人不知道如何快速顯示桌面,只好將各個視窗一一最小化。這種方法對於用戶來說非常耗時且令人沮喪。因此,本文將向您介紹Windows中快速顯示桌面的十種超快速方法。

如何使用 Windows Repair 修復 Windows 錯誤

如何使用 Windows Repair 修復 Windows 錯誤

Windows Repair 是一款有效的 Windows 錯誤修復工具,幫助使用者修復與 Internet Explorer、Windows Update 和其他重要程式相關的錯誤。

如何在 Windows 10 中開啟資料夾選項或檔案總管選項

如何在 Windows 10 中開啟資料夾選項或檔案總管選項

您可以使用檔案總管選項來變更檔案和資料夾的工作方式並控制顯示。掌握如何在 Windows 10 中開啟資料夾選項的多種方法。

有關在 Windows 10 上刪除使用者帳戶的 5 種方法的說明

有關在 Windows 10 上刪除使用者帳戶的 5 種方法的說明

刪除不使用的使用者帳戶可以顯著釋放記憶體空間,並讓您的電腦運行得更流暢。了解如何刪除 Windows 10 使用者帳戶的最佳方法。

如何使用Bootsect /nt60將VBC更新為BOOTMGR

如何使用Bootsect /nt60將VBC更新為BOOTMGR

使用 bootsect 命令能夠輕鬆修復磁碟區引導程式碼錯誤,確保系統正常啟動,避免 hal.dll 錯誤及其他啟動問題。

Windows 11 中的存檔應用程式功能是什麼?應該啟用還是停用它?

Windows 11 中的存檔應用程式功能是什麼?應該啟用還是停用它?

存檔應用程式是一項功能,可以自動卸載您很少使用的應用程序,同時保留其關聯的檔案和設定。了解如何有效利用 Windows 11 中的存檔應用程式功能。

如何在 Windows 10 上為 BlueStacks 5 啟用虛擬化 (VT)

如何在 Windows 10 上為 BlueStacks 5 啟用虛擬化 (VT)

要啟用虛擬化,您必須先進入 BIOS 並從 BIOS 設定中啟用虛擬化,這將顯著提升在 BlueStacks 5 上的效能和遊戲體驗。