利用html实现限制ip的投票网站作弊方案
来源: 阅读:1116 次 日期:2014-12-29 15:28:04
温馨提示: 小编为您整理了“利用html实现限制ip的投票网站作弊方案”,方便广大网友查阅!

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

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

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

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

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

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

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

xml/html code复制内容到剪贴板

post /vote/view.php?sid=33act=vote http/1.1

accept: */*

referer:

content-type: application/x-www-form-urlencoded

x-forwarded-for: 218.20.218.200

client_ip: 218.20.218.200

via: 218.20.218.200

remote_addr: 218.20.218.200

accept-language: zh-cn

accept-encoding: text

user-agent: mozilla/4.0 (compatible; msie 7.0; windows nt 6.0; slcc1; .net clr 2.0.50727; .net clr 3.0.04506)

host:

cookie: phpsessid=pldjnb6scereodjm5niqb9q990

content-length: 49

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解释 分析:

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

xml/html code复制内容到剪贴板

$user_ip = ($_server[http_via]) ? //是否使用了代理

$_server[http_x_forwarded_for] : $_server[remote_addr];

//获取失败则从remote_addr获取

$user_ip = ($user_ip) ? $user_ip : $_server[remote_addr];

?>

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

然后我们来测试一下.

服务端代码:

xml/html code复制内容到剪贴板

//输出http_x_forwarded_for

echo http_x_forwarded_for:.$_server[http_x_forwarded_for];

//输出remote_addr echo remote_addr:. $_server[remote_addr];

?>

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

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

更多信息请查看IT技术专栏

更多信息请查看网页制作
由于各方面情况的不断调整与变化, 提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!
关于我们 | 联系我们 | 人才招聘 | 网站声明 | 网站帮助 | 非正式的简要咨询 | 简要咨询须知 | 加入群交流 | 手机站点 | 投诉建议
工业和信息化部备案号:滇ICP备2023014141号-1 云南省教育厅备案号:云教ICP备0901021 滇公网安备53010202001879号 人力资源服务许可证:(云)人服证字(2023)第0102001523号
云南网警备案专用图标
联系电话:0871-65317125(9:00—18:00) 获取招聘考试信息及咨询关注公众号:
咨询QQ:526150442(9:00—18:00)版权所有:
云南网警报警专用图标
Baidu
map