精华内容
下载资源
问答
  • SQL注入如何判断数据库类型
    千次阅读
    2021-04-01 10:54:05

    前言

    在进行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,另外也支持--/**/

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

    1. 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' 
    
    1. 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' 
    
    1. SQL Server
    http://127.0.0.1/test.php?id=1 and 'a'+'b'='ab' 
    

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

    1. MySQL(version>5.0)
    http://127.0.0.1/test.php?id=1 and (select count(*) from information_schema.TABLES)>0 and 1=1
    
    1. Oracle
     http://127.0.0.1/test.php?id=1 and (select count(*) from sys.user_tables)>0 and 1=1
    
    1. SQL Server
     http://127.0.0.1/test.php?id=1 and (select count(*) from sysobjects)>0 and 1=1
    

    根据盲注特别函数判断

    1. MySQL
    BENCHMARK(1000000,ENCODE('QWE','ASD'))
    SLEEP(5)
    
    1. PostgreSQL
    PG_SLEEP(5)
    GENERATE_SERIES(1,1000000)
    
    1. SQL Server
    WAITFOR DELAY '0:0:5'
    
    更多相关内容
  • 数据库类型判断

    千次阅读 2019-06-14 20:37:20
    判断数据库类型,主要是通过各数据库特有的函数,字符串处理,注释等来排除、猜测数据库的类型。 常见的数据库: Oracle、MySQL、SQL Server、Access、MSsql、Postgresql,mongodb等 前端与数据库类型: asp:sql ...

    作者:小刚
    一位苦于信息安全的萌新小白帽,记得关注给个赞,谢谢
    本实验仅用于信息防御教学,切勿用于它用途

    在sql注入之前,先得学会判断web后面是个啥子数据库,这样才能对症下毒,更容易实现sql注入
    判断数据库类型,主要是通过各数据库特有的函数,字符串处理,注释等来排除、猜测数据库的类型。
    在这里插入图片描述

    常见的数据库:

    Oracle、MySQL、SQL Server、Access、Postgresql,mongodb等

    前端与数据库类型:

    asp:sql server,Access
    .net :sql server
    php:PostgreSQL,Mysql
    java:Oracle,Mysql

    常用web和数据库构造:

    1,Asp+access或sql server
    2,PHP+Mysql

    各数据库标志性信息:

    sql server:select@@version --
    Oracle :select banner from v$version
    mysql:select @@version,version() --
    length(user)>0正常
    postgresql:select version() --

    各数据库特有的函数:

    sql server: @@pack_received @@rowcount
    mysql:connection_id() last_insert_id() row_count()
    orcale:bitand(1,1)
    postgresql: select extract(dow from now())

    对于字符串处理方式:

    sql server :id=1 and 'a'+'b'='ab' --
    mysql:id=1 and 'a'+'b'='ab' , 'ab'=concat('a','b')
    oracle:id=1 and 'a'+'b'='a'||'b' ,'ab'=concat('a','b')
    postgresql :id=1 and 'a'+'b'='a'||'b' ,'ab'=concat('a','b')

    特殊符号,注释的判断

    安顺序来
    1,“null”和“%00”是Access支持的注释。
    2,“#”是MySQL中的注释符,返回错误说明该注入点可能不是MySQL,另外也支持’-- ',和/* */注释(注意mysql使用-- 时需要后面添加空格)
    3,“”和/* */是Oracle,SQL server和MSSQL支持的注释符,如果正常,说明可能就是这仨了。
    4,“;”是子句查询标识符,在Oracle中不支持多行查询,返回错误,很可能是Oracle数据库。
    这样一串下来,基本就知道了数据库类型了

    对Mssql和access数据库的判断:

    ’ and exists (select count(*) from sysobjects) >0正常,就是MSSQL数据库

    ’ and exists (select count(*) from msysobjects) >0两条都不正常,是Access数据库

    通过上面各种判断方法,各种主流数据库基本就能判断出来了。判断好数据库类型后,在结合前面说的sql注入方法,基本就那啥了。
    在这里插入图片描述

    展开全文
  • NoSQL数据库类型简介

    万次阅读 多人点赞 2019-06-27 15:00:01
    但是,归结起来,可以将典型的 NoSQL 划分为 4 种类型,分别是键值数据库、列式数据库、文档数据库和图形数据库,如图 1 所示。 图 14 种类型的 NoSQL 数据库 图 2键值数据库举例 1. 键值数据库 键值数据库...

    近些年来,NoSQL 数据库的发展势头很快。据统计,目前已经产生了 50 到 150 个 NoSQL 数据库系统。但是,归结起来,可以将典型的 NoSQL 划分为 4 种类型,分别是键值数据库、列式数据库、文档数据库和图形数据库,如图 1 所示。

    4种类型的NoSQL数据库
    图 1  4 种类型的 NoSQL 数据库

    键值数据库举例
    图 2  键值数据库举例

    1. 键值数据库

    键值数据库起源于 Amazon 开发的 Dynamo 系统,可以把它理解为一个分布式的 Hashmap,支持 SET/GET 元操作。

    它使用一个哈希表,表中的 Key(键)用来定位 Value(值),即存储和检索具体的 Value。数据库不能对 Value 进行索引和查询,只能通过 Key 进行查询。Value 可以用来存储任意类型的数据,包括整型、字符型、数组、对象等。

    如图 2 所示。键值存储的值也可以是比较复杂的结构,如一个新的键值对封装成的一个对象。一个完整的分布式键值数据库会将 Key 按策略尽量均匀地散列在不同的结点上,其中,一致性哈希函数是比较优雅的散列策略,它可以保证当某个结点挂掉时,只有该结点的数据需要重新散列。

    在存在大量写操作的情况下,键值数据库可以比关系数据库有明显的性能优势,这是因为关系型数据库需要建立索引来加速查询,当存在大量写操作时,索引会发生频繁更新,从而会产生高昂的索引维护代价。键值数据库具有良好的伸缩性,理论上讲可以实现数据量的无限扩容。

    键值数据库可以进一步划分为内存键值数据库和持久化键值数据库。内存键值数据库把数据保存在内存中,如 Memcached 和 Redis。

    持久化键值数据库把数据保存在磁盘中,如 BerkeleyDB、Voldmort 和 Riak。

    键值数据库也有自身的局限性,主要是条件查询。如果只对部分值进行查询或更新,效率会比较低下。在使用键值数据库时,应该尽量避免多表关联查询。此外,键值数据库在发生故障时不支持回滚操作,所以无法支持事务。

    大多数键值数据库通常不会关心存入的 Value 到底是什么,在它看来,那只是一堆字节而已,所以开发者也无法通过 Value 的某些属性来获取整个 Value。

    2. 列式数据库

    列式数据库起源于 Google 的 BigTable,其数据模型可以看作是一个每行列数可变的数据表, 它可以细分为 4 种实现模式,如图 3 所示。

    列式数据库模型
    图 3  列式数据库模型

    其中,Super Column Family 模式可以理解为 maps of maps,例如,可以把一个作者和他的专辑结构化地存成 Super Column Family 模式,如图 4 所示。

    Super Column Family 模式
    图 4  Super Column Family 模式

    在行式数据库中查询时,无论需要哪一列都需要将每一行扫描完。假设想要在图 5 中的生日列表中查询 9 月的生日,数据库将会从上到下和从左到右扫描表,最终返回生日为 9 月的列表。

    关系型数据库数据模型
    图 5  关系型数据库数据模型

    如果给某些特定列建索引,那么可以显著提高查找速度,但是索引会带来额外的开销,而且数据库仍在扫描所有列。

    而列式数据库可以分别存储每个列,从而在列数较少的情况下更快速地进行扫描。图 6 的布局看起来和行式数据库很相似,每一列都有一个索引,索引将行号映射到数据,列式数据库将数据映射到行号,采用这种方式计数变得更快,很容易就可以查询到某个项目的爱好人数, 并且每个表都只有一种数据类型,所以单独善储列也利于优化压缩。

    列式NoSQL存储模型
    图 6  列式 NoSQL 存储模型

    列式数据库能够在其他列不受影响的情况下,轻松添加一列,但是如果要添加一条记录时就需要访问所有表,所以行式数据库要比列式数据库更适合联机事务处理过程(OLTP),因为 OLTP 要频繁地进行记录的添加或修改。

    列式数据库更适合执行分析操作,如进行汇总或计数。实际交易的事务,如销售类,通常会选择行式数据库。列式数据库采用高级查询执行技术,以简化的方法处理列块(称为“批处理”),从而减少了 CPU 使用率。

    3. 文档数据库

    文档数据库是通过键来定位一个文档的,所以是键值数据库的一种衍生品。在文档数据库中,文档是数据库的最小单位。文档数据库可以使用模式来指定某个文档结构。

    文档数据库是 NoSQL 数据库类型中出现得最自然的类型,因为它们是按照日常文档的存储来设计的,并且允许对这些数据进行复杂的查询和计算。

    尽管每一种文档数据库的部署各有不同,但是大都假定文档以某种标准化格式进行封装,并对数据进行加密。

    文档格式包括 XML、YAML、JSON 和 BSON 等,也可以使用二进制格式,如 PDF、Microsoft Office 文档等。一个文档可以包含复杂的数据结构,并且不需要采用特定的数据模式,每个文档可以具有完全不同的结构。

    文档数据库既可以根据键来构建索引,也可以基于文档内容来构建索引。基于文档内容的索引和查询能力是文档数据库不同于键值数据库的主要方面,因为在键值数据库中,值对数据库是透明不可见的,不能基于值构建索引。

    文档数据库主要用于存储和检索文档数据,非常适合那些把输入数据表示成文档的应用。从关系型数据库存储方式的角度来看,每一个事物都应该存储一次,并且通过外键进行连接,而文件存储不关心规范化,只要数据存储在一个有意义的结构中就可以。

    如图 7 所示,如果我们要将报纸或杂志中的文章存储到关系型数据库中,首先我们要对存储的信息进行分类,即将文章放在一个表中,作者和相关信息放在一个表中,文章评论放在一个表中,读者信息放在一个表中,然后将这四个表连接起来进行查询。

    但是文档存储可以将文章存储为单个实体,这样就降低了用户对文章数据的认知负担。

    4. 图形数据库

    图形数据库以图论为基础,用图来表示一个对象集合,包括顶点及连接顶点的边。图形数据库使用图作为数据模型来存储数据,可以高效地存储不同顶点之间的关系。

    图形数据库是 NoSQL 数据库类型中最复杂的一个,旨在以高效的方式存储实体之间的关系。

    图形数据库适用于高度相互关联的数据,可以高效地处理实体间的关系,尤其适合于社交网络、依赖分析、模式识别、推荐系统、路径寻找、科学论文引用,以及资本资产集群等场景。

    关系型数据库和文档数据库存储报纸或杂志中的文章的比较
    图 7  关系型数据库和文档数据库存储报纸或杂志中的文章的比较

    图形或网络数据主要由结点和边两部分组成。结点是实体本身,如果是在社交网络中,那么代表的就是人。边代表两个实体之间的关系,用线来表示,并具有自己的属性。另外,边还可以有方向,如果箭头指向谁,谁就是该关系的主导方,如图 8 所示。

    图形数据库模型示意
    图 8  图形数据库模型示意

    图形数据库在处理实体间的关系时具有很好的性能,但是在其他应用领域,其性能不如其他 NoSQL 数据库。

    典型的图形数据库有 Neo4J、OrientDB、InfoGrid、Infinite Graph 和 GraphDB 等。有些图形数据库,如 Neo4J,完全兼容 ACID 特性。

    HDFS两种操作方式

    展开全文
  • 大数据:数据库类型简介

    万次阅读 2019-02-23 22:21:08
    这篇文章,作为抛砖引玉,给大家介绍各种常见数据库的类别。在之后还有发布一些文章,针对性地分析同一个类别中的数据库的优缺点。 这将是一个系列的文章,几个从事大数据工作的朋友,组成一个大数据学习小组,对...

    这篇文章,作为抛砖引玉,给大家介绍各种常见数据库的类别。在之后还有发布一些文章,针对性地分析同一个类别中的数据库的优缺点。

    这将是一个系列的文章,几个从事大数据工作的朋友,组成一个大数据学习小组,对大数据的知识体系进行一次系统的梳理。

    在下表中,从几个维度简单展示了当下流行的一些数据库的特性,让大家能有个初步认识。在做出分类时,会有不准确的情况,比如Oracle是否支持内存存储,Oracle的临时表,或者新版本可以存储在内存中。本文将Oracle归类于‘不支持内存存储’,是希望告诉大家,通常情况下,Oracle的数据都在存储在磁盘上,而不是内存里。

    常用数据库类型统计

    数据库分类内存存储列存储K/V存储文件存储
    Kafka消息队列支持不支持不支持不支持
    mongodb文档数据库不支持不支持不支持支持
    FastDFS文档数据库不支持不支持不支持支持
    Neo4J图数据库不支持不支持不支持不支持
    ElasticSearch索引数据库支持不支持支持支持
    Solr索引数据库支持不支持支持支持
    MyCAT数据库中间件不支持不支持不支持不支持
    Memcache内存数据库支持不支持支持支持
    Redis内存数据库支持不支持支持支持
    SAP HANA内存数据库支持支持支持支持
    db4o面向对象数据库不支持不支持不支持不支持
    Vertica列式数据库不支持支持不支持不支持
    Oracle关系型数据库不支持支持不支持支持
    MySQL关系型数据库不支持不支持不支持支持
    SQL Server关系型数据库不支持不支持不支持支持
    OceanBase关系型数据库不支持不支持不支持不支持
    HIVE关系型数据库不支持不支持不支持不支持
    MPP关系型数据库不支持支持不支持支持
    GreenPlum关系型数据库不支持支持不支持支持
    PostgreSQL关系型数据库不支持不支持不支持支持
    NeoView关系型数据库不支持不支持不支持不支持
    CassandraNoSQL数据库不支持支持支持支持
    HbaseNoSQL数据库不支持支持支持支持

    同时也抛出几个问题,帮助大家更好的理解数据库:

    1. 数据库集群与分布式数据库的区别?

    从应用开发人员/用户感知上,没什么区别。通常说Oracle,MySQL是数据库集群,Hadoop,MyCat是分布式数据库,事实上,他们都可以分布式(一群服务器串在一起)。他们都可以做大数据。

    2. Oracle和MySQL区别大吗?

    可以很大,除了费用上的区别,安全性,稳定性,易维护等很多方面Oracle都更优。但是普通的项目都是感知不到这些区别的。一般都是大公司(有钱),或者银行存交易数据(很重要),才极力推荐Oracle。

    3. 内存数据库是啥?

    内存的读写效率比磁盘高,所以内存数据库一定更快,也一定更贵。

    4. 哪些场景适合使用内存数据库?

    新浪微博热搜排名,数据碰撞(出入闸机在你刷卡的一瞬间检查你是否在黑名单)。

    5. 列存储是啥?

    传统的数据存储形式就像excel(行存储)。列存储就是以列为存储单元。

    6. 列存储优缺点?

    列存储写很慢,读很快。不支持高并发。

    7. 哪些场景适合使用列存储数据库?

    BI分析(快速读取数据),如果只是单列(单一维度),关系型数据库做索引即可,但是分析需要用到多列,做多个索引,甚至全索引不如用列数据库;某些复杂的精准查询,普通的精准查询关系型数据库即可,比如当表结构常发生变化时。

    8. 什么是K/V数据库?

    Key-Value的效果等同于索引,所以查询速度更快。

    9. 文件存储?

    某些数据库支持文件存储,照片等有时可以存在数据库中,而不是单独的文件服务器,甚至是文件集群。

    我个人认为,在数据库选型时,需要考虑“合适”,不要盲目地学新东西,也不要盲目地把系统复杂化。

    工作中存在许多选择错误数据库的情况,一部分人是因为不了解,一部分人是因为为了噱头。很多公司,甚至政府部门,面对几百G,甚至几十G的数据时,他们就会认为“这就是大数据”,必须要用前沿技术解决。实际是,即使是MySQL,多一些服务器,较好的设计维护,几百个T的数据也能流畅运行。

    我看到很多系统,都存在过度设计的问题。比如只是做精准查询,明明Mysql也能做,偏偏要搭建ES集群;做文件存储,明明Hbase,Oracle也行,偏偏要搭个FastHDFS。并不是这些组件不好,只是一个轻量级的系统,何必做那么多模块呢。

    展开全文
  • 数据库类型之时间戳

    千次阅读 2020-06-15 16:30:14
    timestamp数据类型是一个比较特殊的数据类型,他可以自动在你不使用程序更新情况下只要你更新了记录timestamp会自动更新时间. 通常表中会有一个Create date 创建日期的字段,其它数据库均有默认值的选项。MySQL也有...
  • 在java中,对于String 类型的字段,我们在设计数据库的时候,会有两个选择,一个char,一个varchar,那我们应该怎么选择呢? 我们先来看一下char和varchar的区别: char是定长的,varchar是可变的。 举个例子:...
  • 时间类型的转换: java.util.Date–>java.sql.Date、Time、Timestamp 把util的Date转换成毫秒值 使用毫秒值创建sql的Date、Time、Timestamp java . util . Date date = new java . util . Date ( ) ;...
  • MyBatis之Mapper.xml获取数据库类型

    千次阅读 2017-11-24 17:23:50
     不同的数据库的Sql语法有所不同,为了保证在不同的数据库中都能执行,我们需要在MyBatis的Mapper.xml文件中编写sql语句时对当前连接的数据库类型进行判断,然后编写适应不同数据库的sql语句。现在我们就是要解决...
  • Java数据类型对应的各数据库类型

    万次阅读 2018-09-25 11:49:58
    Java与Oracle、IBM Content Manager、Informix及SQL Server映射表: ...对于bolb,一般用于对图片的数据库存储,原理是把图片打成二进制,然后进行的一种存储方式,在java中对应byte[]数组。 ...
  • 数据库类型区分

    千次阅读 2018-01-15 10:51:43
    数据库类型主要可分为: 网状数据库(Network Database)、 关系数据库(Relational Database)、 树状数据库(Hierarchical Database)、 面向对象数据库(Object-oriented Database)等。 商业应用中主要是关系数据库...
  • ThinPHP5报错信息如下:通过跟踪查找框架源码,没有匹配到数据库配置文件的原因。查看源码果然是,我这里又重新写了配置,这个配置早被我干掉了。改回默认配置成功了,自己坑自己没理由,TP5这个提示也是让人费解,...
  • 判断jdbc连接的数据库类型

    千次阅读 2018-08-15 10:23:34
    jeeplus框架中,对sqlserver数据库的分页不支持。 需要进行分页工具类的修改,所以需要对数据库类型进行判断 https://blog.csdn.net/yu452148611/article/details/46314699...
  • 数据库类型与java数据类型的对应关系1. 从 JDBC 类型映射到 Java 类型JDBC 类型Java 类型CHARStringVARCHARStringLONGVARCHARStringNUMERICjava.math.BigDecimalDECIMALjava.math....
  • 生物蛋白质数据库类型【总结】

    千次阅读 2020-04-01 16:05:56
    蛋白质数据库类型有:UniProtKB、PDB、Pfam、CATH、SCOP2、KEGG、OMIM。 UniProtKB 属于一级蛋白质数据库。网址为: http://www.uniprot.org/ 其三个层次数据库: UniPrac:收录所有UniProt数据库子库的蛋白质...
  • 配置文件 需要添加以下配置: PageHelper分页插件 pagehelper: helperDialect: oracle reasonable: true supportMethodsArguments: true params: count=countSql postgresql可以改用PageHelper的offsetpage解决,...
  • varchar -- String tinyint -- Integer date -- java.util.Date bigint -- Long decimal -- java.math.BigDecimal datetime -- java.util.Date timestamp -- java.util.Date char -- String ...
  • 判断web后台数据库类型的方法

    千次阅读 2017-09-28 10:34:06
    最近正在学sql注入的知识,记录一下识别后台数据库的方法。 一、根据网页编程语言去判断 ASP和.NET:Microsoft SQL Server PHP:MySQL、PostgreSQL Java:Oracle、MySQL 以上是常见的搭配。 二、根据...
  • Navicat创建数据库类型与排序

    千次阅读 2018-09-13 13:50:00
  • 判断当前数据库类型是mysql还是oracle

    千次阅读 2017-11-20 16:50:29
    判断使用的数据库类型,可以从配置文件,从获取连接判断。 databaseName = 配置方法.SourceTransactionManager().getDataSource().getConnection() .getMetaData().getDatabaseProductName(); 从数据源开始获取...
  • 这篇文章的内容是摘自《Introducing Data Science》,我们在这里将要想大家介绍四种NoSQL数据库类型,坚持读下去你会获得更多有用的信息。 目前对于非关系型数据库主要有四种数据存储类型:键值对存储(key-value...
  • 数据库、数据库类型、RDBMS以及MySQL

    千次阅读 2019-02-13 12:26:17
    什么是数据库 数据库 就是按一定的结构来组织、存储和管理数据的仓库 ...数据库类型 包括 : 关系型 和 非关系型 【关系型】 MySQL MariaDB PostgreSQL Microsoft SQL Server Oracle数据库 Sybase 【...
  • 后台数据库类型判断:一、通过页面返回的报错信息,一般情况下页面报错会显示是什么数据库类型,在此不多说;二、通过各个数据库特有的数据表来判断:1、mssql数据库 http://127.0.0.1/test.php?id=1and(select ...
  • 数据库类型varchar和nvarchar的区别

    千次阅读 2019-02-14 17:09:38
    (1)   varchar(n)长度为 n 个字节的可变长度且非 Unicode 的字符数据。  n 必须是一个介于 1 和 8,000 之间的数值。存储大小为输入数据的字节的实际长度,而不是 n 个字节。   ... nvarchar(n)包含 n 个字符的...
  • 数据库类型——varchar,varchar2&char

    千次阅读 2017-12-21 22:53:31
    数据库中varchar,varchar2,以及char是经常使用的字段类型,文章将简要地介绍三者的关系以及联系。
  • 根据数据源获得数据库类型

    千次阅读 2013-12-03 17:52:24
    根据数据源获得数据库类型
  • 1.PowerDesigner设置数据库2.设置数据库的自增属性 3.将default Value设置出来,将comment也勾选出来 4.注意事项1、不再一个库中的两个表没法建立关联关系。2、定义主键的时候,不要...6、备注这种类型的使用varchar
  • 数据库简介及类型

    万次阅读 2018-11-14 16:24:50
    简单的说,数据库(英文Dtabase)就是一个存放数据的仓库,这个仓库是按照一定的数据结果(数据结构是指数据的组织形式或数据之间的联系)来组织、存储的、我们可以通过数据库提供的多种方法来管理数据库里的数据更...
  • 几种主流数据库类型简介

    万次阅读 2014-04-14 21:58:43
     DB2是IBM出口的一系列关系型数据库管理系统,分别在不同的操作系统平台上服务。虽然DB2产品是基于UNIX的系统和个人计算机操作系统,在基于UNIX系统和微软在windows系统下的Access方面,DB2追寻了ORACLE的数据库...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,138,394
精华内容 855,357
关键字:

数据库类型