在SQL语句如何获得MSSQLSERVER登录用户和密码?请zjcxc等人回答。

wcqgm 2006-06-16 03:54:50
如题。
如我在服务中设置了登录用户是ttt密码为1111,有时为了运行特殊的程序(xp_cmdshell访问网络资源),请问如何才能获得ttt为1111,请大家指教。谢谢!
...全文
2049 15 打赏 收藏 举报
写回复
15 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
ou108 2006-06-22
up
本人進來也想學習一下
結果也是:dbo,NULL
哈哈哈
  • 打赏
  • 举报
回复
wcqgm 2006-06-22
再请教一下
在本机SQL2005的查询分析器中执行EXEC
master..xp_cmdshell 'net use \\10.1.2.24\hx1 wcq /user:administrator' 其中10.1.2.24是本机IP地址,报错,信息是:
发生系统错误 1219。
NULL
不允许一个用户使用一个以上用户名与一个服务器或共享资源的多重连接。中断与此服务器或共享资源的所有连接,然后再试一次...
但是在DOS下或是在SQL2000下(我的机子装了SQL2000和SQL2005)执行都正常,唯独在SQL2005下不正确,但是如果换了其他用户及其密码,则显示正确。
我查了不少资料,但是没有任何进展,我不明白,administrator用户在SQL2005中为什么不能正常使用,是不是我哪地方没有设置。请指教,谢谢!
  • 打赏
  • 举报
回复
wcqgm 2006-06-22
该问题我看是没办法解决了。就算作送分吧。
  • 打赏
  • 举报
回复
addwing 2006-06-19
留念,学习,帮你顶!
  • 打赏
  • 举报
回复
wcqgm 2006-06-18
那用户名如何获得?请楼上的给个说法呀!
  • 打赏
  • 举报
回复
zjcxc 元老 2006-06-16
如果你的电脑够好, 如果你有兴趣, 可以尝试穷举破解


if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_GetPassword]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[p_GetPassword]
GO

/*--穷举法破解 SQL Server 用户密码

可以破解中文,特殊字符,字符+尾随空格的密码
为了方便显示特殊字符的密码,在显示结果中,显示了组成密码的ASCII

理论上可以破解任意位数的密码,一般的电脑都可以破解3位密码
条件是你的电脑配置足够,时间足够

--邹建 2004.08(引用请保留此信息)--*/

/*--调用示例

--测试特殊字符
declare @pwd sysname
set @pwd=char(0)+'a '
exec sp_password null,@pwd,'sa'
exec p_GetPassword

--测试带空格的密码
exec sp_password null,'a ','sa'
exec p_GetPassword

--测试中文
exec sp_password null,'我 ','sa'
exec p_GetPassword

--清除密码
exec sp_password null,null,'sa'
--*/
create proc p_GetPassword
@username sysname=null, --用户名,如果不指定,则列出所有用户
@pwdlen int=3 --密码破解的位数,默认只破解3位及以下的密码
as
--生成要破解的密码的用户表
select name,password
,type=case when xstatus&2048=2048 then 1 else 0 end
,jm=case when password is null or datalength(password)<46
then 1 else 0 end
,pwdstr=case when datalength(password)<46
then cast(password as sysname)
else cast('' as sysname) end
,pwd=cast('' as varchar(8000))
into #pwd
from master.dbo.sysxlogins a
where srvid is null
and name=isnull(@username,name)

--生成临时表
select top 255 id=identity(int,0,1) into #t from sysobjects a,sysobjects b
alter table #t add constraint PK_#t primary key(id)

--清理不需要的字符
if not exists(select 1 from #pwd where type=1)
delete from #t where id between 65 and 90 or id between 129 and 254

--密码破解处理
declare @l int
declare @s1 varchar(8000),@s2 varchar(8000),@s3 varchar(8000),@s4 varchar(8000)

--破解1位密码
select @l=0
,@s1='id=a.id'
,@s2='#t a'
,@s3='char(b.id)'
,@s4='cast(b.id as varchar)'
exec('
update pwd set jm=1,pwdstr='+@s3+'
,pwd='+@s4+'
from #pwd pwd,#t b
where pwd.jm=0
and pwdcompare('+@s3+',pwd.password,pwd.type)=1
')

--破解超过2位的密码
while exists(select 1 from #pwd where jm=0 and @l<@pwdlen-1)
begin
select @l=@l+1
,@s1=@s1+',id'+cast(@l as varchar)
+'='+char(@l/26+97)+char(@l%26+97)+'.id'
,@s2=@s2+',#t '+char(@l/26+97)+char(@l%26+97)
,@s3=@s3+'+char(b.id'+cast(@l as varchar)+')'
,@s4=@s4+'+'',''+cast(b.id'+cast(@l as varchar)+' as varchar)'
exec('
select '+@s1+' into #tt from '+@s2+'
update pwd set jm=1,pwdstr='+@s3+'
,pwd='+@s4+'
from #pwd pwd,#tt b
where pwd.jm=0
and pwdcompare('+@s3+',pwd.password,pwd.type)=1
')
end

--显示破解的密码
select 用户名=name,密码=pwdstr,密码ASCII=pwd
from #pwd
go
  • 打赏
  • 举报
回复
zjcxc 元老 2006-06-16
无法获得, 密码是单向加密的
  • 打赏
  • 举报
回复
云中客 2006-06-16
要获取用户的密码很难,如果忘记密码,可以修改此用户的密码
  • 打赏
  • 举报
回复
winstonbonaparte 2006-06-16
我换了自已定义的一个角色进去了呀。
噢,我看了一下。我那个角色是属于system administraors的
  • 打赏
  • 举报
回复
billpu 2006-06-16
dbo 是因为你用了system administraors的角色进 换个角色试试
  • 打赏
  • 举报
回复
winstonbonaparte 2006-06-16
楼上的几位,
select user_name()

select name,password from sysusers where name=user_name();
我这怎么取不出来?我取出来的name总是dbo,密码null.
可我用了用户名登进去。
  • 打赏
  • 举报
回复
WangZWang 2006-06-16
用户名可以获得,密码获得的方法就比较困难,暂时只有‘穷举法’获得密码,但普通
机型只支持3-4位的密码。 建议可以用配置来直接设置用户名&密码。
  • 打赏
  • 举报
回复
luxi0194 2006-06-16
select user_name()

select name,password from sysusers where name=user_name();
  • 打赏
  • 举报
回复
wangdehao 2006-06-16
这个。。基本上不可能吧?
如果可以的话就太不安全了吧?
  • 打赏
  • 举报
回复
luxi0194 2006-06-16
在 SQL Server 中,返回登录名或帐户的函数以下面的方式操作:

USER_ID('database_user_name')
USER_ID 返回与指定数据库用户名关联的数据库用户 ID。如果未指定 database_user_name,则 USER_ID 返回与当前连接关联的数据库用户 ID。

USER_NAME(database_user_ID)
USER_NAME 返回与指定的数据库用户 ID 关联的数据库用户名。如果未指定 database_user_ID,则 USER_NAME 返回与当前连接关联的数据库用户名。

CURRENT_USER、SESSION_USER、USER
这些函数都是 USER_NAME()(不指定 database_user_ID 参数的 USER NAME)的同义词。

  • 打赏
  • 举报
回复
相关推荐
发帖
MS-SQL Server
加入

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2006-06-16 03:54
社区公告
暂无公告