SQL注入如何判断数据库
1.根据前端语言判断
asp / asp.net : SQL Server PHP : MySQL / PostgreSQL java : MySQL / PostgreSQL / Oracle
2.默认端口
MySQL : 3306 PostgreSQL : 5432 SQL Server : 1433 Oracle : 1521
3.字符串拼接
'a' + 'b' = 'ab' : SQL Server / MySQL
'a' || 'b' = 'ab' : PostgreSQL / Oracle
CONCAT() : MySQL / PostgreSQL / Oracle
4.注释符识别
# : MySQL
-- : 通用
5.语法
LIMIT 1 : MySQL / PostgreSQL
TOP : SQL Server
ROWNUM : Oracle
6.长度函数
LEN() : SQL Server
LENGTH() : MySQL / PostgreSQL / Oracle
7.版本函数
version()
@@version
8.元数据表
information_schema.tables : MySQL / PostgreSQL
pg_catalog.pg_tables : PostgreSQL
sysobjects : SQL Server
sys.user_tables : Oracle
9.睡眠函数
pg_sleep() : PostgreSQL (PG_SLEEP(5) 、 GENERATE_SERIES(1,1000000))
sleep() : MySQL (SLEEP(5) 、 BENCHMARK(1000000,ENCODE('QWE','ASD')))
WAITFOR : SQL Server (WAITFOR DELAY '0:0:5')
补充
Oracle不支持多行查询,;会报错
MySQL: substring() 和 substr()
SQL Server: substring()
Oracle: substr()