Table of Contents
对于多数网站后端处理来说,重复提交的问题很常见,程序员也经常忽略或懒得修改重复提交的问题。但是对于关键业务来说,解决重复提交的问题就非常有必要。去年公司的Java服务因为没有做并发控制,导致30万元左右的财务损失,虽然只追究了开发人员的责任,但是作为测试人员,着实为自己的水平低下蒙羞。
下面我们说说如何用fiddler工具模拟重复提交。
我们就以登录yy网站为例子
下图是我设置浏览器使用fiddler代理后抓到的yy登录的会话
图中可以看出,数据包到达的目的主机是lgn.yy.com
1 先在fiddler界面按“alt + q”键输入“bpu lgn.yy.com”截断发往此主机的数据包,Ctrl + a 全选会话并删除
2 在yy登录界面输入用户名和密码点击确定
3 此时fiddler界面出现一个被拦截的红色标记的会话,选中此会话,按键盘“shift + r”键,输入要复制的会话数,例如9个,全选这十个会话再点击“GO”放行数据包到服务器,即可重复发包。
很显然,yy网站对重复提交做了控制。
这里只是10次重复提交,如果这个业务是送积分或代金券的,一次提交成千上万次,结果可想而知。
笔者就遇到过这种重复提交的漏洞,结果一般是数据库产生多条重复的数据,而且用fiddler可以直接绕过前端,直接对后端进行攻击。