虽然SQL语言是一个标准的,每一个数据库管理系统有其特殊性,不同于彼此在许多方面像特殊命令,函数来检索数据,如用户名和数据库,功能,评论等。
当测试人员搬到一个更高级的SQL注入剥削他们需要知道什么是后端数据库。
1)第一种方法找出使用后端数据库是通过观察返回的错误应用程序。 以下是一些例子的错误消息:
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
一个完整的联盟选择与版本()也可以帮助了解后端数据库。
SELECT id, name FROM users WHERE id=1 UNION SELECT 1, version() limit 1,1
Oracle:
ORA-00933: SQL command not properly ended
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.
2)如果没有错误消息或一个自定义的错误信息,测试人员可以尝试使用不同的连接技术注入字符串字段:
MySql: ‘test’ + ‘ing’
SQL Server: ‘test’ ‘ing’
Oracle: ‘test’||’ing’
PostgreSQL: ‘test’||’ing’