一次真实的XXS攻击

这是一个真实的事,一家比较大的公司举办的一个全国性的投票,然而,页面确实写得很烂,做假太容易。

首先,找到投票按钮的源代码:

这里写图片描述

这个”tp”类就是投票事件的定位关键字。

然后,打开source下的源文件,搜索“.tp”:

这里写图片描述

可以看到,这就是投票事件的代码

分析源代码

//投票
    jq('#scrollText_01>ul li .tp').click(function () {
        //判断是否对此人投票
        var index = jq(this).parent().index();
        var id = index + 1;
        if(jq.cookie('chenyi_'+id)){
            alert('您已经投票,不可重复!');
        }else{
            var num = jq("#"+index).html();
            //点赞
            jq.getJSON(rootPath + "dztr/index.php?_c=dztr&_a=prized&callback=?", {"id": id,"num": num}, function (json) {
                var data = eval(json);
                var vote_num = data.prized_num;
                if (data.msg == 'no') {
                    vote_num = num;
                    alert('投票失败,请重新投!');
                }else{
                    jq.cookie('chenyi_'+id, 1, { expires: 365 });
                }
                jq('#' + index).text("" + vote_num + "");
            });
        }
    });

很明显,它是通过cookie来判断用户的。

那不看代码,怎么猜测一个投票网站是通过哪种方式识别用户呢?
可以在一个浏览器投一次票,然后再换一个浏览器偷,如果能投,说明是通过cookie来判断用户的。如果不能,那就可能是通过ip来限制的。
通过cookie来限制的,可以删除cookie来绕过,直接在浏览器的开发工具的就可以找到和删除。但是,这种方法每投一次票就要删除一次cookie.如果刚巧这个网站又用了js来验证cookie,那么我们就可以修改验证的代码来绕过。我们知道html是事件驱动的,那么就可以从事件绑定代码入手,进行修改。
上面的网站就是犯了:1、不用登录,使用cookie识别用户投票状态 2、使用js验证cookie 两个大忌

通过分析,现将投票事件解绑:

jq('#scrollText_01>ul li .tp').off()

再重新绑定事件,把验证cookie的代码删去即可:

jq('#scrollText_01>ul li .tp').click(function () {
        //判断是否对此人投票
        var index = jq(this).parent().index();
        var id = index + 1;

        // 只需修改这里
        if(false){
            alert('您已经投票,不可重复!');
        }else{
            var num = jq("#"+index).html();
            //点赞
            jq.getJSON(rootPath + "dztr/index.php?_c=dztr&_a=prized&callback=?", {"id": id,"num": num}, function (json) {
                var data = eval(json);
                var vote_num = data.prized_num;
                if (data.msg == 'no') {
                    vote_num = num;
                    alert('投票失败,请重新投!');
                }else{
                    jq.cookie('chenyi_'+id, 1, { expires: 365 });
                }
                jq('#' + index).text("" + vote_num + "");
            });
        }
    });

然后就可以一直点击投票,再也不会被限制了。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值