October 14, 2007

XX新闻网投票系统刷票分析及实例

今天应辅导员姐姐要求,给XXX投票。投票地点是老朋友了,XX新闻网。
        以前在工作室的时候常常接到上级命令,给某某高官政要或是老师刷票,也是不得已而为之:眼看着个不知名的破学校的某个XX男要超过本校业界大牛XXX了,对方全校人数估计都没我们学校前三个学院加起来多,这不刷票,不行啊。从那个时候起,就和XX新闻网,四川XX网结下了不解之缘。
        映像最深刻的是给XX学院李XX投票那一次。我就是这个XX学院的。川大的一个周XX头一天还低李XX至少1W票,第二天早上爬起来发现姓周那家伙噌噌噌噌蹿到9W多票,整整比我们的李XX高一倍。李XX很生气,学校很生气,学工部很生气,我们被要求“刷回来”。那是一个夜黑风高的夜晚【扯淡!不过是晚上而已】,我,MIMI,DDT一干人等排排坐在工作室,MIMI在抓包,DDT在研究JS生成身份证及自动刷新,我在分析投票过程。到半夜的时候,狼人出现了【再扯淡不看了!】,终于找到漏洞,而后写了个测试页面,30秒刷了大概1000票吧。余辈皆大喜,找了三台电脑,开了三个页面自动刷新,每秒5票。第二天我们都睡到下午才来。。。于是我们的李XX雄纠纠气昂昂最终以20W高于周XX8W的优势率先冲过终点。。。【faint!】。
        不过那次是因为XX新闻网自己的程序出了问题,验证的部分居然和投票的部分分开了,然后绕过验证直接进去投票。。。也从那次以后,XX新闻网的投票一下子变得难刷起来。。。加了验证码,加了IP限制,貌似还有coockie,杂七杂八的一大堆。
        不要灰心,所有的投票都可以刷,除非单票限制。只不过刷的爽不爽,要看写投票那个程序员哥哥的IQ而定。
以下是常见的投票页面的源代码:
        //;;;以下为代码
       


        李XX           
        周XX   
        身份证号码:
        姓名:
        验证码:
       
       
        //;;;以上为代码
        值得注意的是type="checkbox"的input,这是我们刷票的关键。当我们选中一个checkbox的时候,源代码里边会变成:。这就使得我们可以定义页面打开的时候那些框框被选中。
        此外,请考虑Server端的代码,接受POST过来的数据,并进行统计。貌似唯一的方法是使用foreach(),而这里,就是我们刷票的关键所在。foreach是可以循环执行的,没有任何限制,除非所有的checkbox都被处理进数据库。
        由此,我们想到,要是让这个foreach进入死循环,岂不是可以一直进行投票。不幸的是,死循环的思路正确,却不可行。但是我们可以采用另外一种做法:我们POST一次,Server端就会foreach一次,我们要投票的人票数也就加了一次。如果我们POST一次,Server端foreachN次,而投票数自然就加了N次。如何做到?很简单。请注意上文提到的input。每一个input都有一个value,这也就是这个input所代表的被投票者的编号。看到这里,请停止,自己思考5分钟寻找破解之法。5分钟之后再见罗!【烤苹果,吃鸡蛋,打扑克聊天。。。球掉下来啦!--以上来自《少林足球》】
        OK,如果一时没有想到,请往下看:将所有的input的value都改成你要投票的那位GG的编号。一目了然了吧。假设有三十个checkbox的复选框组,我们一次POST,就可以做到投30票,这多令人振奋。当然,当我第一次发现这个漏洞的时候,验证码还不流行。。。于是我给我第一个刷票客户三个HTML文件,告诉他,第一个是500票的,第二个是1000票的,第三个是5000票的,叫他慎用。。。
        不过今天战果也很不错,虽然一次只能投12票【Server端限制了】,但要刷那位老兄的票数还是噌噌。。就上去了。
        谨以此篇技术文章抛砖引玉,望各位看见的大大多指教。
        更重要的,多留言。
        更更重要的,留言要让我知道你是谁。。。
        并借此怀念以前一起刷票的MIMI,DDT,TK等GG些。我想死你们啦。
        以上。

*- - - - - -

anonymous - 222.212.69.212 - 2007-10-14 13:04:45
那个网站太瓜了,不验证IP就算了,还允许一次多票……囧rz

Anonymous - 125.120.203.122 - 2007-10-14 13:13:57
留言有没有好处 syx*

  • LinkedIn
  • Tumblr
  • Reddit
  • Google+
  • Pinterest
  • Pocket
Comments powered by Disqus