zoukankan      html  css  js  c++  java
  • cookies欺骗漏洞代码详细分析

    在前面已经为大家演示了如何利用工具进行cookie欺骗,然后进入后台。

    现在我们从程序的角度上来学习如何挖掘代码中存在的cookie欺骗漏洞。还是以第二章中的那个心情网络投票系统来举例。

    我们先来看看在心情网络投票系统中系统是如何得到cookie的,它的程序其实就上上一节中采用cookie验证的那个例子,代码这里不在列举出来了,可以参考上面的。

    在上面的代码中,有样的两行代码:

    response.cookies("admin")=rs("admin")

    response.cookies("pass")=rs("pass")

    当登陆用户的名称及密码正确,程序就会在该用户的cookies中增加admin和pass这两项。他们就是系统给登陆用户赋予的cookie值,采用cookie当然是为了方便我们以后登陆。那么在以后的登陆过程中它是怎么验证的我们的cookies值,实现验证的过程在check.asp文件中,代码如下所示:

    <%if request.cookies("admin")="" or request.cookies("qx")="" then

                response.write "<script>alert('你还未登陆,请登陆!');</script>"

                response.write "<script>location.href='index.asp';</script>"

                response.end

            end if%>

    仔细看第一行代码:request.cookies("admin")="" or request.cookies("qx")=""。它的意思是如果request.cookies("admin")中的值和request.cookies("qx")中的值同时为空的话,那么就弹出一个对话框显示“你还未登陆,请登陆”并返回到index.asp页面去。这行代码存在很大的逻辑问题,如果我们request.cookies("admin")的值不为空呢;或者request.cookies("qx")的值不为空呢;或者他们两个的值都不为空呢,那么不就不会输出错误了吗?也就成功的进入了后台了。

    所以我们只需要在验证的时候使request.cookies("admin")和request.cookies("qx")中的值不同时空,要使他们不为空,我们用桂林老兵修改一下他们的cookie值就可以了,至于他们的值为多少就无所谓,重要的是要保证他们不为空就可以了,那么这样就可以成功的进入后台。

    其实,分析cookie欺骗的代码很简单。之所以会出现这样的漏洞是因为他们在逻辑上考虑不严格而导致的。例如下面的代码也是典型:

    if request.cookies("username")="" then

    //判断cookie中的username是否为空

    response.redirect "login.asp"

    //为空就转向login.asp

    end if

     

    if request.cookies("password")="" then

    //判断cookie中的password是否为空

    response.redirect "login.asp"

    //为空就转向login.asp

    end if

     

    if request.cookies("randomid")<>4790 then

    //判断cookie中的randomid(验证码)是否为4790

    response.redirect "login.asp"

    //不等于就转向login.asp

    end if

        程序判断从客户端获得的用户名和密码是否为空,如果有一个为空,就转向login.asp,最后还判断验证码是不是4790,如果不是也转向login.asp去所以要对它进行cookie也很简单,只需要使用户名和密码不为空且验证码为4790就可以达到欺骗的目的了。

    所以要分析程序中存在的cookie欺骗漏洞,逻辑思维比较重要,同时逻辑运算符一定要学好,至于逻辑运算符在7.1节已经给大家列举了两个表,没事的时候多看看那两个表,对你绝对是有好处的。

  • 相关阅读:
    springmvc单Redis实例实现分布式锁(解决锁超时问题)
    出现Please make sure you have the correct access rights and the repository exists.问题解决
    微信小程序确保获取到token值之后再执行请求
    微信小程序api封装
    微信小程序 没有找到可以构建的npm包
    vscode开发微信小程序使用less(插件Easy WXLESS)
    深入理解移动端响应式(非原创)
    git push后出现错误 ![rejected] master -> master(non-fast-forward) error:failed to push some refs to 'XXX'
    微信小程序星星评价
    更改微信小程序的组件默认样式
  • 原文地址:https://www.cnblogs.com/shanmao/p/2773829.html
Copyright © 2011-2022 走看看