从报错判断:
1. ORACLE
ORA-01756:quoted string not properly terminated
ORA-00933:SQLcommand not properly ended
2. MS-SQL
Msg 170,level 15, State 1,Line 1
Line 1:Incorrect syntax near ‘foo
Msg 105,level 15,state 1,Line 1
Unclose quotation mark before the character string ‘foo
3. MYSQL
you have an error in your SQL syntax,check the manual that corresponds to you mysql server version for the right stntax to use near 'foo'' at line x
如果存在注入的话,已经能确定可以执行数据库函数的情况下,可以使用一些常用的函数判断,比如说:mssql、oracle没有if、sleep函数,如果if和sleep函数可以用的话,那大概率mysql,而oracle和mssql数据库的区分,可以用decode函数,oracle专用,另外就是根据用户函数和数据库函数判断,mssql数据库可以使用user_name()和db_name(),其他数据库就不行。
其实还有很多函数可以区分,可以自己在本地安装常见的数据库进行测试下
居然还能找到sql注入,我已经两年没见过sql注入长啥样了
你这个问题 还不如直接 甩给gpt
在渗透测试中,确定 SQL 注入漏洞后,进一步确定数据库类型通常需要一些技巧和经验。以下是一些常用的方法来判断数据库类型:
错误消息:在某些情况下,数据库的错误消息会直接告诉你数据库的类型。例如,MySQL 错误消息通常会包含 "MySQL" 字样。
SQL 语法差异:不同的数据库在 SQL 语法上存在差异。例如,MySQL 使用 LIMIT 语句来限制查询结果的数量,而 SQL Server 使用 TOP。
数据库特定的函数:尝试使用数据库特有的函数,如果它们被成功执行,那么可以确定数据库类型。例如,DATABASE() 是 MySQL 特有的函数。
数据库特定的存储过程:尝试调用数据库特有的存储过程,比如 xp_cmdshell 是 SQL Server 特有的。
数据库版本信息:如果能够执行 SELECT VERSION() 或类似的查询,这将返回数据库的版本信息,通常包含数据库类型。
时间延迟注入:通过时间延迟注入技术,可以尝试不同的数据库特有的查询,根据查询执行时间来判断。
数据库信息泄露:某些数据库可能允许查询 sys.databases(SQL Server)或 pg_database(PostgreSQL)等系统表来获取数据库类型信息。
操作系统命令执行:如果能够执行操作系统命令,可以尝试执行特定于数据库的命令,比如在 SQL Server 中执行 dir 命令。
数据库指纹:使用自动化工具,如 sqlmap,它可以帮助识别数据库类型,甚至可以进一步利用 SQL 注入漏洞。
数据库配置文件:在某些情况下,数据库配置文件(如 MySQL 的 my.cnf 或 PostgreSQL 的 postgresql.conf)可能包含数据库类型的信息。
数据库特性:利用数据库的特性,比如 MySQL 的 INFORMATION_SCHEMA,可以帮助确定数据库类型。
https://www.pa55w0rd.online
1. 通过语言和端口简单缩小范围
2. 测试一些常见语法和函数
3. 报错信息
4. 可以去portswigger的sql cheatsheet看一下