sql注入——想要知道后台数据库类型,怎么做?

原创
2019/01/24 14:18
阅读数 138

即使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

一个完整的利用version()函数进行的联合查询也能够帮助了解后台数据库。

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’

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部