网页上的暴力攻防战

时间:2022-10-17 08:38:37

网页上的暴力攻防战

一个夜黑风高的晚上,一个黑衣男子(在小说里,黑客都穿黑衣服?)拿着一台黑色笔记本,手指飞快地在键盘上跳跃……“啊!怎么投票结果变化得这么不正常,难道投票系统被人入侵了!?”正在监控数据库的网管发现了网站的异样。原来,这家杂志正在进行图书和杂志订阅的在线投票,谁能想到,一场暴力与反暴力的大战竟然就在这小小的投票页面中展开了!

第一战:投票页面“露点”了

第1步 找出网页中的投票表单代码

刷票是从何处下手的?黑衣男子右击了投票页面的空白处选择“查看源代码”,搜索“

防守:在网页中加入禁止右键的JScript,防止用户查看源代码。

第2步 确定接收结果的网站程序URL

标准的HTML表单头部代码格式为“”,此处接收地址为“../common/vote_p.jsp”(“..”指当前页面的上一层目录,网页目录结构用“/”而非“\”)。而“method='post'”指表单向接收程序发送内容时使用的方式,另一种是Get。

防守:将表单设为“Post”能提高刷票的技术门槛。

第3步 获取变量名称,确定类型

图2

在和之间的就是表单中所有的变量(要传递的内容),搜索“

防守:在接收变量的网页程序中,不建议直接使用表单中相同的变量名(除非不考虑安全因素)。

第二战:来源检查不严,刷!

由于投票页面采用Post方法,按理是不能用在URL后附加变量名和值的Get方法了。幸运的是,网站的接收程序对变量来源的检查不严,没有限制只接收Post发来的变量,所以,只要构造一个包含要传递的变量的URL并反复刷新,就能达到刷票的效果。根据在第一战中收集到的资料,我们构造了下面的URL(真实域名已隐去):www.#####.com/common/vote_p.jsp?op=1&bh=2&type=A

其中“op=1”表示投第一项,即“知道,而且在线购买过”,能修改为其他数字。访问该地址并反复刷新后,就能看到结果页面中翻腾的数字了!

防守:在接收变量的网页程序中指定获取来源是Get还是Post。使用验证码(防止程序刷票)和IP投票次数限制(对局域网有影响)更安全。

小知识:什么是表单?看Google

Windows程序经常会有对话框,如QQ聊天对话框,能把你要输入的信息传递给QQ程序再发给对方。表单,就是网站程序中用来干同样事情的东西。Google首页就是一个最简单的大表单,在搜索框中输入内容,按“Google搜索”按钮,就能告诉Google网站程序你要搜什么了(然后得到网站程序返回的结果页面)。

小知识:Get与Post区别大

用Get方法传递后,要传递的参数会附加在接收结果的URL最后,如要传递名为“Class”,值为“1”的变量,则在URL最后加上“?Class=1”。如Google的搜索程序页面URL为“ /search”,而要搜索内容的变量名称为“q”,要搜索“cfan”,进入“/search?q= cfan”即可,多个“变量/值”之间用“&”连接。而Post方法要传递的信息不出现在链接中,而是包含在HTTP请求的头部中,它比较适合用来传递较长或者需要保密的内容,登录CFan论坛时,表单提交后链接中不会出现有关用户名或密码信息,因为采用了Post。

小提示:

有些网站的投票系统采用Cookie来判断是否已投票,防止刷票,却疏忽了检查Cookie是否可以写入,于是……进入浏览器“Internet选项隐私设置站点”,然后将要刷票的网站加入“拒绝”,就能越过网站的检查了!

测试网站喜刷刷

“刷”,是为了“反刷”!赶紧到练兵场来试试!刷票测试网页:.cn/school/zhuanti/ceshi。

首先在浏览器的Internet选项中,禁用.cn的cookie。然后反复访问.cn/school/zhuanti/ceshi/jishu.php?tp1_1=0402。

注:①"0402"修改为想投的数字。②"tp1_1"为第一个一等奖,可用"&tp1_2"之类的变量名同时提交其他奖。

上一篇:如何下载邮件中的可执行文件附件 下一篇:玩活PPStream 精彩节目不错过