SQL注入分析服务器类型

分析数据库服务器类型

一般来说,ACCESS与SQL-SERVER是最常用的数据库服务器,尽管它们都支持T-SQL标准,但还有不同之处,而且不同的数据库有不同的攻击方法,必须要区别对待。

⒈利用数据库服务器的系统变量进行区分

SQL-SERVER有user,db_name()等系统变量,利用这些系统值不仅可以判断SQL-SERVER,而且还可以得到大量有用信息。如:

① HTTP://xxx.xxx.xxx/abc.asp?p=YY and user>0 不仅可以判断是否是SQL-SERVER,而还可以得到当前连接到数据库的用户名

②HTTP://xxx.xxx.xxx/abc.asp?p=YY&n ... db_name()>0 不仅可以判断是否是SQL-SERVER,而还可以得到当前正在使用的数据库名;

⒉利用系统表

ACCESS的系统表是msysobjects,且在WEB环境下没有访问权限,而SQL-SERVER的系统表是sysobjects,在WEB环境下有访问权限。对于以下两条语句:

①HTTP://xxx.xxx.xxx/abc.asp?p=YY and (select count(*) from sysobjects)>0

②HTTP://xxx.xxx.xxx/abc.asp?p=YY and (select count(*) from msysobjects)>0

若数据库是SQL-SERVE,则第一条,abc.asp一定运行正常,第二条则异常;若是ACCESS则两条都会异常。

⒊MSSQL三个关键系统表

sysdatabases系统表:Microsoft SQL Server 上的每个数据库在表中占一行。最初安装 SQL Server 时,sysdatabases 包含 master、model、msdb、mssqlweb 和 tempdb 数据库的项。该表只存储在 master 数据库中。这个表保存在master数据库中,这个表中保存的是什么信息呢?这个非常重要。他是 保存了所有的库名,以及库的ID和一些相关信息。

这里我把对于我们有用的字段名称和相关说明给大家列出来。name //表示库的名字。

dbid //表示库的ID,dbid从1到5是系统的。分别是:master、model、msdb、mssqlweb、tempdb 这五个库。用select * from master.dbo.sysdatabases 就可以查询出所有的库名。

Sysobjects:SQL-SERVER的每个数据库内都有此系统表,它存放该数据库内创建的所有对象,如约束、默认值、日志、规则、存储过程等,每个对象在表中占一行。

syscolumns:每个表和视图中的每列在表中占一行,存储过程中的每个参数在表中也占一行。该表位于每个数据库中。主要字段有:

name ,id, colid :分别是字段名称,表ID号,字段ID号,其中的 ID 是 刚上我们用sysobjects得到的表的ID号。

用: select * from ChouYFD.dbo.syscolumns where id=123456789 得到ChouYFD这个库中,表的ID是123456789中的所有字段列表。

原文发布于微信公众号 - 数据库SQL(SQLdba)

原文发表时间:2015-03-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏spring源码深度学习

linux安装redis+设置远程连接(史上最容易)

redis-server -v查看安装的redis版本。我安装的是3.0,这个版本就不错了,如果更新了数据源依然是2.8左右版本,我建议还是用下载压缩包的方式安...

621
来自专栏蓝天

redis for lack of backlog

版本: redis-3.2.9 部署: 5台64G内存的物理机,每台机器启动2个redis进程组成5主5备集群,每台机器1个主1个备,并且错开互备...

865
来自专栏向治洪

Dalvik虚拟机

Dalvik虚拟机是google专门为android平台开发的一个java虚拟机,但它并没有使用JVM规范。Dalvik虚拟机主要完成对象生命周期的管理、线程...

1927
来自专栏农夫安全

注入学习之sqli-labs-3(第二关)

前言 本来是想一个个关卡讲下去,后来自己测试了一下,发现第二、三、四这三关跟第一关,起始原理是一样的,只不过是单引号,双引号,带不带括号的区别,只要我们带入的语...

3286
来自专栏北京马哥教育

修改及查看mysql数据库的字符集

Liunx下修改MySQL字符集: 1.查找MySQL的cnf文件的位置 find / -iname ‘*.cnf’ -print /usr/share/mys...

3719
来自专栏java初学

mysql入门 — (1)

3369
来自专栏坚毅的PHP

mysql复制学习一

mysql复制传统上是基于语句的复制,5.0实现了基于行的复制。基于语句复制将执行语句及执行信息写入二进制日志中。 二进制日志包含 binlog和索引文件。bi...

3439
来自专栏刘远飞的专栏

Nginx 封锁恶意 IP,并且定时取消的两种脚本

有时候服务器会遭受到恶意IP访问,导致服务器负载很大,这个时候需要把这个IP封锁掉,以下两种脚本即可实现这种功能。一是直接通过nginx即可,在配置文件中加入i...

8610
来自专栏令仔很忙

Mybaits深入了解(一)----带你入门

MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google ...

531
来自专栏fixzd

redis系列:主从复制

这篇文章主要讲述Redis的主从复制功能。会依次从环境搭建、功能测试和原理分析几个方面进行介绍。

751

扫描关注云+社区