利用HTML实现限制ip的投票网站作弊方案

   2015-08-09 0
核心提示:很多投票类的网站是不能重复投票的,主要是限制ip,一个ip只可以投票一次,下面我们一起来看看利用HTML实现限制ip的投票网站作弊方案,需要的朋友可以参考下

  对限制ip的投票网站作弊方案,这个方法利用了投票网站监测远程ip的一些漏洞来实现,并没有真正的伪造ip地址,http是建立的tcp之上的第七层,是不可能伪造真实ip地址的最近朋友需要一个投票软件,我最近也就研究了一下这个投票网站,这个投票网站有验证码,每个IP限制为一票,看起来是标准的投票网站。我先研究了一下验证码:

  这个投票网站的验证码开始很简单,标准位置的标准四个数字,很好识别。后来变态到位数不一定,而且还有字母,而且还位置上下不一定,这下验证码的识别,不但是软件很难识别,就连人工识别都困难。山穷水尽疑无路,柳暗花明又一村,请看下段分解!

  在我不断的分析和研究发现他的验证码检查有漏洞,发现了这个漏洞,这个验证码已经形同虚设,无需识别,无需验证码,直接就绕过去了,因为他只在投票选项页设置检查验证码是否为空的 js代码,js代码是运行在客户端,这种验证的效果为零,一般JS这种验证只是为了方便用户来使用的,做为投票网站只使用这一种验证方式,在投票处理动态页面竟然不检查验证码是否为空,实在是不敢恭维,给网站的安全带来极大的隐患。

  对于验证码的问题,我已经了解了破解方法,只要在投票的时候不直接访问验证码文件,那么验证码就是为空,既然他的动态页面不检查验证码是否为空,所以只要在post的时候验证码参数为空就可以了。

  那么还有一个问题就是这个投票网站检查IP,限制一个IP只允许投票一次,那么只有使用代理,或者通过不停的断网和拨号才能实现。我实在想不到其他好办法,后来这个朋友找到了一个可以极速在这个网站投票的程序,我对这个程序的IP解决方案很好奇就问朋友要来想分析一下。

  首先我是采取对这个投票软件进行抓包的方式来研究,准备好了之后,打开投票程序“刷!提示软件冲突!”晕,不会吧,那我就关掉一些程序,都关完了只留一个抓包程序还提示冲突,呵呵,原来这个程序竟然还知道有人可能会分析他的软件,竟然遍历进程名称,检查是否有可疑的程序,如果有程序对他进行分析或者抓包,他就拒绝运行。呵呵,目前我知道他限制的软件有易语言编程软件,还有 WSockExpert_Cn 抓包软件。呵呵,关了易语言,把 WSockExpert_Cn 名称改一下,顺利通过软件的自身安全检测,运行成功。

  以下是我在使用过程中他投票是的数据包:

XML/HTML Code复制内容到剪贴板
  1. POST /vote/view.php?sid=33act=vote HTTP/1.1   
  2. Accept: */*   
  3. Referer: http://www.qdnfy.gov.cn/vote/vote.php   
  4. Content-Type: application/x-www-form-urlencoded   
  5. X-Forwarded-For: 218.20.218.200   
  6. CLIENT_IP: 218.20.218.200   
  7. VIA: 218.20.218.200   
  8. REMOTE_ADDR: 218.20.218.200   
  9. Accept-Language: zh-cn   
  10. Accept-Encoding: text   
  11. User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506)   
  12. Host: www.qdnfy.gov.cn   
  13. Cookie: PHPSESSID=pldjnb6scereodjm5niqb9q990  
  14. Content-Length: 49   
  15. Connection: Close  

   -Forwarded-For   发现了这个http头参数  后面跟着IP,呵呵,这个参数肯定有来头,原来我一直不知道,呵呵,赶紧百度一下。

  下面是百度后的一篇说明文章,说得很好,大家看看。
  伪造HTTP头中的X-Forwarded-For字段来伪造IP百度了一下X-Forwarded-For的原理,这东西出来好长时间了.我还第一次听说X-Forwarded-For:简称XFF头,它代表客户端,也就是HTTP的请求端真实的IP,只有在通过了HTTP 代理或者负载均衡服务器时才会添加该项。

  它不是RFC中定义的标准请求头信息,在squid缓存代理服务器开发文档中可以找到该项的详细介绍。

  标准格式如下:

  X-Forwarded-For: client1, proxy1, proxy2

  从标准格式可以看出,X-Forwarded-For头信息可以有多个,中间用逗号分隔,第一项为真实的客户端ip,剩下的就是曾经经过的代理或负载均衡的ip地址,经过几个就会出现几个。

  wiki 的X-Forwarded-For解释 http://en.wikipedia.org/wiki/X-Forwarded-For分析:

  既然是要伪造客户端IP,那我们先看看一般是怎样获取客户端IP地址的(以php为例).这段代码是在百度搜索到的.大部分网站可能都用这段代码。

XML/HTML Code复制内容到剪贴板
  1. $user_IP = ($_SERVER["HTTP_VIA"]) ? //是否使用了代理    
  2. $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"];    
  3. //获取失败则从REMOTE_ADDR获取   
  4. $user_IP = ($user_IP) ? $user_IP : $_SERVER["REMOTE_ADDR"];    
  5. ?>  

     首先判断HTTP_VIA头是否存在,HTTP_VIA头代表是否使用了代理服务器.如果没有那就从REMOTE_ADDR字段获取客户端的IP地址,如果有那就从X-Forwarded-For获取客户端IP我估计很多程序员都是从百度来的代码吧.asp也类似.

  然后我们来测试一下.

  服务端代码:

XML/HTML Code复制内容到剪贴板
  1. //输出HTTP_X_FORWARDED_FOR    
  2. echo "HTTP_X_FORWARDED_FOR:".$_SERVER["HTTP_X_FORWARDED_FOR"];    
  3. //输出REMOTE_ADDR echo "REMOTE_ADDR:". $_SERVER["REMOTE_ADDR"];    
  4. ?> 
  5.    

  可以看到获取到的客户端ip地址是不一样的.REMOTE_ADDR为真实地址.

  所以一个网站如果是从X-Forwarded-For来判断客户端IP地址的话,那么我们就可以利用这个逻辑漏洞刷票。

 
标签: HTML ip 投票网站
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • JavaScript DOM方法、innerHTML实现增删改
    !DOCTYPE htmlhtmlheadmeta charset="UTF-8"title/titlestyle*{list-style: none;}#main{border: 1px solid black;width: 270px;height: 300px;float: left;text-align: center;}button{display: block;text-align: center;margin-left:20px ;margin-top: 10p
    03-08
  • 【javascript基础】insertAdjacentHTML和insert
    IE的DHTML对象提供了四个可读写的属性来动态操作页面元素的内容:innerText, outerText, innerHTML, outerHTML.  需注意两点:  1. 其中innerText,outerText属性的值是作为普通文本呈现的,即使它含有HTML标签也如实反应出来;而innerHTML, outerHTML呈现的
    03-08
  • JavaScript利用canvas绘制流星雨效果 html流星雨特效
    JavaScript利用canvas绘制流星雨效果 html流星
    目录前言需求分析实现过程1.绘制满天繁星2.满天繁星闪起来3.绘制流星4.流星划过夜空5.流星雨6.merge视觉盛宴前言最近总是梦见一些小时候的故事,印象最深刻的就是夏天坐在屋顶上,看着满天的繁星,一颗,两颗,三颗...不由自主地开始了数星星的过程。不经意间
    03-08
  • 纯CSS隔行换色 html隔行换色
    head meta http-equiv="Content-Type" content="text/html; charset=utf-8" / titlecss3隔行变换色---www.jbxue.com/title style type="text/css" #list1 li:nth-of-type(odd){ background:#00ccff;}奇数行 #list1 li:nth-of-type(even){ background:#
    03-08
  • css文字溢出隐藏,及强制断句 html文字溢出隐藏
    只显示一行文字,便溢出隐藏  text-overflow: ellipsis;  white-place: nowrap;  overflow: hidden;显示 n 行文字后便溢出隐藏   display: -webkit-box;  -webkit-line-clamp: n;  -webkit-box-orient: vertical;  overflow: hidden;强制断句
    03-08
  • 前端Html+Css——宝宝篇(自学一个月) html前端怎么学
  • 人民币符号¥在css和html正确显示
    商城项目需要涉及到人民币的页面现实问题。但是¥(指的是通常输入法中文全角模式下按shift+4的那个)在宋体(v3.03, v5.0)的情况下是显示一杠。常见的其他字体微软雅黑(Microsoft YaHei),华文细黑(STXihei),細明體(MingLiu)能显示两杠。CSS方式:fo
    03-08
  • CSS及HTML、js中的资源路径问题 html引入js文件
    路径 分为相对路径和绝对路径一、相对路径。相对于文件本身的路径。用 ./ 表示同一文件夹下的兄弟文件。用../ 表示所处文件夹的父文件夹中的文件。二、绝对路径。本机绝对路径是 例如  E:\phpStudy\WWW\NEWPC\images.网络的绝对路径是指:例如一张图片的绝
    03-08
  • 合并css/js请求 怎么将css代码合并到html中
    在项目开发的过程中,为了追求速度,减少页面建立的 http 连接数,会对多个css/js请求进行合并如:script src="http://local.com/js/a.js"script src="http://local.com/js/b.js"script src="http://local.com/js/c.js"这样的请求可以合并为:script src="htt
    03-08
  • css文件和js文件后面带一个问号 html中css文件
    经常看一些网站页面源代码中的css文件和js文件后面带一个问号,后面跟着一连串数字或字符,这是干什么用的? 这个方法我也用过,而且很好用?,它的作用有两个:1、作为版本号,让自己方便记忆、查找;2、作为修改标签,让浏览器重新下载新文件。 其实css文件
    03-08
点击排行