信息来源: www.77169.com
主题:狙击 bbsxp 6.0 全版本
应用对象:BBSXP 6.0 SQL SP1
现在我比较忙,闲的时候呢!看看书,发现bbsxp 6.0漏洞,感觉不错.写篇文章给新手参考!希望能从中学到东西.
首先,这个漏洞是一个注入点.说说漏洞是如何发现的.
漏洞发现:
打开源文件找到EditPost.asp的第67-72行,NewTopice.asp的第129-134行,ReTopic.asp的第78-83行会发现以下代码:
if Request.Form("UpFlieID")<>"" then
UpFileID=split(Request.form("UpFileID"),",")
for i=0 to ubound(UpFileID)-1
Conn.execute("update [BBSXP_PostAttachments]
set ThreadID="& ThreadID&",Description='"&Subject&"' where
id ="&UpFileID(i)& " and ThreadID =0")
next
end if
其实这几行代码很简单,为了新手能看明白,我罗列了一些相关知识点:
split函数的使用:
For Example:
<%
public namearray
qname="Wang;Zhang;Ning"
response.write qname & "
"
namearray=split(qname,";") \'把qname字符串以分号分开,然后赋给一个数组
max=ubound(namearray)
for counter=0 to max-1
response.write namearray(counter) & "
"
next
response.write "
"
%>
ubound 函数的使用:
返回一个 Long 型数据,其值为指定的数组维可用的最大下标。
语法
UBound(arrayname[, dimension])
UBound 函数的语法包含下面部分:
部分 描述
arrayname 必需的。数组变量的名称,遵循标准变量命名约定。
dimension 可选的;Variant (Long)。指定返回哪一维的上界。1 表示第一维,2 表示第二维,如此等等。如果省略 dimension,就认为是 1
。
示例
该示例使用 UBound 函数,确定数组的指定维的最大可用下标。
Dim Upper
Dim MyArray(1 To 10, 5 To 15, 10 To 20) '声明数组变量。
Dim AnyArray(10)
Upper = UBound(MyArray, 1) '返回 10。
Upper = UBound(MyArray, 3) '返回 20。
Upper = UBound(AnyArray) '返回 10
我们可以看到在这段代码中没有对UpFileID数组内的数据作任何过滤就直接用在查询语句中了。我们以EditPost.asp这个页面为例来说明
。这个页面的功能是编辑帖子的。我们可以随便找一个版面发表一个帖子之后编辑它,查看源代码能够找到与此类似的一个脚本: