使用Fiddler模拟重复提交

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可以直接绕过前端,直接对后端进行攻击。