郧西论坛

标题: Dvbbs8.1 0DAY(通杀Access和mssql版本) [打印本页]

作者: 苦咖啡    时间: 2008-1-10 09:39
标题: Dvbbs8.1 0DAY(通杀Access和mssql版本)
看代码UserPayasp行12-64
  1. If Request("raction")="alipayreturn" Then
  2. AliPayReturn()
  3. DvbbsFooter()
  4. ResponseEnd
  5. ElseIf Request("action")="alipayreturn" Then
  6. AliPayReturn()
  7. DvbbsFooter()
  8. ResponseEnd
  9. 'ElseIf Request("action")="Reinmoney" Then
  10. ' Reinmoney()
  11. ' DvbbsFooter()
  12. ' ResponseEnd
  13. End If
复制代码
无论用户提交的raction为alipayreturn还是action为alipayreturn都调用了AliPayReturn()过程。AliPayReturn()的代码原型在行329-351,代码如下:
  1. Sub AliPayReturn()
  2. If DvbbsForumChanSetting(5) <> "0" Then
  3.   AliPayReturnOld()
  4.   Exit sub
  5. Else
  6.   Dim Rs,OrderNo,EnCodeStr,UserInMoney
  7.   OrderNo=Request("outtradeno")
  8.   Set Rs = DvbbsExecute("Select * From [DvChanOrders] Where OIsSuc=3 And OPayCode=&#39;"&OrderNo&"&#39;")
  9.   If not(RsEof And RsBof) Then
  10.    AliPayReturnOld()
  11.    Exit sub
  12.   End if
  13.   ResponseClear
  14.   Set Rs = DvbbsExecute("Select * From [DvChanOrders] Where OIsSuc=0 And OPayCode=&#39;"&OrderNo&"&#39;")
  15.   If RsEof And RsBof Then
  16.    ResponseWrite "N"
  17.   Else
  18.    ResponseWrite "Y"
  19.    DvbbsExecute("Update DvChanOrders Set OIsSuc=3 Where OID = " & Rs("OID"))
  20.   End If
  21.   ResponseEnd
  22. End If
  23. End Sub
复制代码
如果DvbbsForumChanSetting(5) <> "0" 就执行下面的sql语句,我们来看看数据库里默认的ForumChanSetting吧。
  1. 1,1,0,0,[email]pay@aspskynet[/email],0,b63uvb8nsvsmbsaxszgvdr6svyus0l4t,1,1,1,1,1,1,1,100,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
复制代码
ForumChanSetting(5)缺省为0,好了你接着看就会笑了
  1. OrderNo=Request("outtradeno")
  2.   Set Rs = DvbbsExecute("Select * From [DvChanOrders] Where OIsSuc=3 And OPayCode=&#39;"&OrderNo&"&#39;")
复制代码
直接把获取的OrderNo放到sql里面去了。
回顾一下DVbbs80的Userpayasp同样一个函数看代码:
  1. Sub AliPayReturn()
  2. If DvbbsForumChanSetting(5) <> "0" Then
  3.   AliPayReturnOld()
  4. Else
  5.   ResponseClear
  6.   Dim Rs,OrderNo,EnCodeStr,UserInMoney
  7.   OrderNo = DvbbsCheckStr(Request("orderno"))
  8.   Set Rs = DvbbsExecute("Select * From DvChanOrders Where OIsSuc=0 And OPayCode = &#39;"&OrderNo&"&#39;")
  9.   If RsEof And RsBof Then
  10.    ResponseWrite "N"
复制代码

作者: 苦咖啡    时间: 2008-1-10 13:42
用DVBBS的朋友请尽快删除此文件等官方补丁
作者: 岭上鹰    时间: 2008-1-11 10:35
有些头晕了
作者: 苦咖啡    时间: 2008-1-11 19:14
可以通过DVBBS购买道具过滤不严来伪造一个注入点
就可以得到管理员用户名和密码
作者: 岭上鹰    时间: 2008-1-14 10:48
把SQL玩的得很透的人,我佩服,老子一定很灵活
作者: 苦咖啡    时间: 2008-1-14 10:57
长在俺身上自己使使还算不错吧




欢迎光临 郧西论坛 (http://www.yunxi.net/) Powered by Discuz! X3.2