发文章
发文工具
撰写
网文摘手
文档
视频
思维导图
随笔
相册
原创同步助手
其他工具
图片转文字
文件清理
AI助手
留言交流
问题分析:因 SQL 服务器中毒,导致病毒篡改 SQL 用户的密码,病毒为了阻止操作员手工修正(修改)SQL用户的密码,而把存储过程 'sp_password' 删除,导致的问题。错误如下图所示:
解决思路:在系统中重新建一个 'sp_password' 的存储过程,以便更新现有的 SQL用户密码
步骤:
1、打开查询分析器:
方法1. 可以依次打开:开始---> 运行 ,输入命令 isqlw,按回车即可启动查询分析器,如下图所示
方法2. 通过开始菜单、程序、Microsoft SQL Server、找到“查询分析器”单击打开即可启动2、登录 查询分析器:在弹出的登录界面中作如下图所示的设置,点“确定”,登录到查询分析器中
3、把下面附录中的重建代码复制到刚才打开的查询分析器中
4、按 F5 执行重建代码
代码分析:允许修改系统数据 ---> 重建系统内置存储过程 ----> 恢复为不能直接修改系统数据
5、后记:此方法只是能解决因为没有存储过程而不能修改密码的问题,出现此问题,大多数情况下操作系统已经中毒,这也是为什么更改密码之后,过段时间又不能使用的原因。
可能有的朋友会想,那把密码改得更复杂,让病毒程序不能连接到SQLSERVER 。其实,改密码并不能彻底解决这个问题,有兴趣的朋友可以试试使用 -E 参数,即“使用信任连接而不请求密码”的方式连接到 SQLSERVER 取得SQLSERVER 的所有权限。
注:本文以 SQL SERVER 2000 界面演示解决此问题的步骤
附录:重建 sp_passsword 存储过程 代码
-- SQL代码开始
sp_configure 'allow updates', 1RECONFIGURE WITH OVERRIDE
go
use mastergo
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[sp_password]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)drop procedure [dbo].[sp_password]go
create procedure sp_password @old sysname = NULL, -- the old (current) password @new sysname, -- the new password @loginame sysname = NULL -- user to change password onas -- SETUP RUNTIME OPTIONS / DECLARE VARIABLES -- set nocount on declare @self int select @self = CASE WHEN @loginame is null THEN 1 ELSE 2 END
-- RESOLVE LOGIN NAME if @loginame is null select @loginame = suser_sname()
-- CHECK PERMISSIONS (SecurityAdmin per Richard Waymire) -- IF (not is_srvrolemember('securityadmin') = 1) AND not @self = 1 begin dbcc auditevent (107, @self, 0, @loginame, NULL, NULL, NULL) raiserror(15210,-1,-1) return (1) end ELSE begin dbcc auditevent (107, @self, 1, @loginame, NULL, NULL, NULL) end
-- DISALLOW USER TRANSACTION -- set implicit_transactions off IF (@@trancount > 0) begin raiserror(15002,-1,-1,'sp_password') return (1) end
-- RESOLVE LOGIN NAME (disallows nt names) if not exists (select * from master.dbo.syslogins where loginname = @loginame and isntname = 0) begin raiserror(15007,-1,-1,@loginame) return (1) end
-- IF non-SYSADMIN ATTEMPTING CHANGE TO SYSADMIN, REQUIRE PASSWORD (218078) -- if (@self <> 1 AND is_srvrolemember('sysadmin') = 0 AND exists (SELECT * FROM master.dbo.syslogins WHERE loginname = @loginame and isntname = 0 AND sysadmin = 1) ) SELECT @self = 1
-- CHECK OLD PASSWORD IF NEEDED -- if (@self = 1 or @old is not null) if not exists (select * from master.dbo.sysxlogins where srvid IS NULL and name = @loginame and ( (@old is null and password is null) or (pwdcompare(@old, password, (CASE WHEN xstatus&2048 = 2048 THEN 1 ELSE 0 END)) = 1) ) ) begin raiserror(15211,-1,-1) return (1) end
-- CHANGE THE PASSWORD -- update master.dbo.sysxlogins set password = convert(varbinary(256), pwdencrypt(@new)), xdate2 = getdate(), xstatus = xstatus & (~2048) where name = @loginame and srvid IS NULL
-- UPDATE PROTECTION TIMESTAMP FOR MASTER DB, TO INDICATE SYSLOGINS CHANGE -- exec('use master grant all to null')
-- FINALIZATION: RETURN SUCCESS/FAILURE -- if @@error <> 0 return (1) raiserror(15478,-1,-1) return (0) -- sp_password
GOsp_configure 'allow updates', 0RECONFIGURE WITH OVERRIDE
-- SQL代码结束
来自: 昵称10504424 > 《Wcf》
0条评论
发表
请遵守用户 评论公约
SQL Server 2000的安全配置
[分享]SQL Server 2000的安全配置margin2005-12-6, 12:49 PM数据库是电子商务、金融以及ERP系统的基础,通常都保存着重要的商业伙伴和客户信息。由于SQLServer不能更改sa用户名称,也不能删除这个超级...
SQLServer中数据加密方法
2、 利用SQLServer未公开的加密密码函数,在SQL代码中调用加密密码函数对数据进行加密后保存;3、 编写扩展存储过程的外部DLL文件实现加密,然后由SQL代码调用加密功能实现数据加密。上面的语句中,...
Linux系统中安装SQLServer
Linux系统中安装SQLServer一、设置镜像curl https://packages.microsoft.com/config/rhel/7/mssql-server-2017.repo >/etc/yum.repos...
Oracle提示错误消息ORA-28001: the password has expired,
Oracle提示错误消息ORA-28001: the password has expired,经调查是由于Oracle 11G的新特性所致, Oracle 11G创建用户时缺省密码过期限制是180天, 如果超过180天用户密码未做修改则该用户无法登录。SEL...
SQL 修改登录名和密码
SQL 修改登录名和密码。1、 先用Window身份验证方式登陆进去,选择数据库实例,右键选择属性——安全性:把服务器身份验证选项从“Windo...
Ubuntu输入su提示认证失败的解决方法
Ubuntu输入su提示认证失败的解决方法 Ubuntu输入su提示认证失败的解决方法。启动Apache服务时竟然提示权限不够,用su切换,输入密码提示认证失败,额。。。后来一经查阅原来Ubuntu安装后,root用户默认...
linux下文件加密压缩和解压的方法
linux下文件加密压缩和解压的方法。此命令对filename文件进行加码压缩 生成filename.des3加密压缩文件, password 为加密的密码。方法1:zip -re filename.zip filename 回车,输入2次密码。方法2:zip...
linux使用su切换用户提示 Authentication failure的解决方法
linux使用su切换用户提示 Authentication failure的解决方法。这个问题产生的原因是由于ubtun系统默认是没有激活root用户的,需要我们手工进行操作,在命令行界面下,或者在终端中输入如下命令:Enter ...
Mac OS X 下 su 命令提示 sorry 的解决方法
Mac OS X 下 su 命令提示 sorry 的解决方法。大家都知道在 Linux 下,执行 su 命令后输入密码即可切换到 root 用户执行各类操作。但是 Mac 下,这样行不通,只会返回你一句 Sorry![plain] view plain c...
微信扫码,在手机上查看选中内容