黑客风云——风云网络
设为首页 加入收藏 我要投稿 网站地图
您现在的位置: 黑客风云 >> 黑客文章 >> 黑客进阶 >> 黑客入侵 >> 文章正文
[推荐]利用新云新漏洞获取管理员密码
      ★★★★★
利用新云新漏洞获取管理员密码
文章整理发布:黑客风云 文章来源:www.05112.com 更新时间:2006-11-6

最近玩新云时,在COOKIE欺骗的时候,经常会遇到已经有管理员在线,不允许多用户同时登陆,导致进不了后台,拿不了webshell,很是郁闷,下了新云的源码回来看了下。在admin_login.asp文件里发现了个小问题,一起来看看(由于小弟ASP算不上入门,仅简单分析下,出错了别拿番茄炸我):
  Sub logout()
  '清除COOKIES中管理员身份的验证信息.
  Session.Abandon
  Session("AdminName") = ""
  Session("AdminPass") = ""
  Session("AdminGrade") = ""
  Session("AdminFlag") = ""
  Session("AdminStatus") = ""
  Session("AdminID") = ""
  Session("AdminRandomCode") = ""
  Response.Cookies(Admin_Cookies_Name) = ""
  Response.Redirect ("../")
End Sub
  这里可以到,我们COOKIE提交的时候主要是提交AdminName,AdminPass,AdminGrade,AdminFlag,AdminStatus,AdminID,AdminRandomCode这几个参数,RandomCode是随机码,也就是登陆时验证管理员是否在线的参数。
  Sub chklogin()
  Dim adminname, password,RandomCode
  adminname = Trim(Replace(Request("adminname"), "'", ""))
  password = md5(Trim(Replace(Request("password"), "'", "")))
  If Newasp.CheckPost = False Then
    ErrMsg = ErrMsg + "您提交的数据不合法,请不要从外部提交登陆。"
    Founderr = True
  End If
  If Newasp.IsValidStr(Request("adminname")) = False Then
    ErrMsg = ErrMsg + "<li>用户名中含有非法字符。</li>"
    Founderr = True
  End If
  If Newasp.IsValidPassword(Request("password")) = False Then
    ErrMsg = ErrMsg + "<li>密码中含有非法字符。</li>"
    Founderr = True
  End If
  If Request("verifycode") = "" Then
    ErrMsg = ErrMsg + "<br>" + "<li>请返回输入确认码。</li>"
    Founderr = True
  ElseIf Session("getcode") = "9999" Then
    Session("getcode") = ""
    ErrMsg = ErrMsg + "<br>" + "<li>请不要重复提交,如需重新登陆请返回登陆页面。</li>"
    Founderr = True
  ElseIf CStr(Session("getcode"))<>CStr(Trim(Request("verifycode"))) Then
    ErrMsg = ErrMsg + "<br>" + "<li>您输入的认码和系统产生的不一致,请重新输入。</li>"
    Founderr = True
  End If
  Session("getcode") = ""
  If adminname = "" Or password = "" Then
    Founderr = True
    ErrMsg = ErrMsg + "<br>" + "<li>请输入您的用户名或密码。</li>"
    Exit Sub
  End If
  If Founderr = True Then Exit Sub
  If Not IsObject(Conn) Then ConnectionDatabase
  Set Rs = Server.CreateObject("ADODB.Recordset")
  SQL = "select * from NC_Admin where password='" & password & "' And username='" & adminname & "'"
  Rs.Open SQL, Conn, 1, 3
  If Rs.BOF And Rs.EOF Then
    FoundErr = True
    ErrMsg = ErrMsg + "<li>您输入的用户名和密码不正确或者您不是系统管理员。!</li>"
    Exit Sub
  Else
    If password <> Rs("password") Then
        FoundErr = True
        ErrMsg = ErrMsg + "<br><li>用户名或密码错误!!!</li>"
        Exit Sub
    End If
    If Rs("isLock") <> 0 Or Rs("isLock") = "" Then
        Founderr = True
        ErrMsg = "<li>你的用户名已被锁定,你不能登陆!如要开通此帐号,请联系管理员。</li>"
        Exit Sub
    End If
  End If
这里定义了三个变量adminname, password,RandomCode 可以看到,从事件开始到结束都没有对RandomCode变量进行判断。

[1] [2] 下一页  

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