请教一个问题,有些网站是前段限制某些输入的,而且这种限制是未作后端验证的。 https://e.189.cn/register/email/step1.do? 例如上面这个网址,用 live.com 的邮箱无法注册。 我尝试了用 fiddler 来构造请求、 Chrome 修改 JS 内容,不得要领,在这里请教一下大家。 如果能非常具体的讲解一下步骤那就是最好的了。非常感谢。
我用 fiddler 构造请求的时候,它这个好像是加密了的,所以我没法找到对应的字段。 我用 Chrome 修改 JS 不知道怎么修改,直接修改好像修改不了。
页面源码有这么一段: //特殊邮箱处理 var rNotSupportEmail=/.(@msn.)|(@live.)|(@vista.)|(@hotmail.)|(@outlook.)|(@yahoo.)|(@gmail.)|(@corp.21cn.)/; if(rNotSupportEmail.test(itemVal)){ return commit(false, "暂不支持此类邮箱注册"); }; if (itemVal.indexOf("@189.cn") != -1) { return commit(false, "189 邮箱帐号可直接登录"); } var rMail21cn=/.@(..)*21cn.((com)|(net))$/; if (rMail21cn.test(itemVal)) { return commit(false, "21cn 邮箱帐号可直接登录"); // return commit(false, "暂不支持 21CN 邮箱注册"); }
1
tinyproxy 2016-11-21 14:22:33 +08:00 1
document.getElementById('setRegInfoMail').submit()
然而人家后端也做了这个校验,我输入一个 [email protected] 能提交成功, [email protected] 就 GG |
2
zhangfanfan OP 额,所以这个是做了后端限制了对吗? 无法用 live.com 邮箱进行注册了
|
4
ferrum 2016-11-21 15:05:35 +08:00 1
你可以先输入正确的信息,然后用 Chrome Dev Tools 看看有什么东西都发送过去了,再构建对应的请求。
有个比较好用的 Chrome 插件叫 Postman ,安装了 Postman Interceptor 后还能直接发送 cookies 。 但楼上也有人说了,数据检验,一般不能只由前端做的,后端也会有的,除非后端开发不上心。 |
5
ferrum 2016-11-21 15:10:52 +08:00 1
对于 https://e.189.cn/register/email/step1.do?这里的注册,看一下 Chrome Dev Tools 里的 Network 就知道怎么回事了。
前端先判断邮箱符不符合要求,符合要求后,再向 https://e.189.cn/validation/userNameExist.do?userName=email%40example.com 发送请求,判断符不符合后端的请求。 |
6
zhangfanfan OP @hardensky 那这种情况下,能否构建修改响应,先欺骗浏览器,进入到下一步(页面)当中去?
|
7
liuzhedash 2016-11-21 15:21:28 +08:00 1
如果只是为了伪造或修改一个请求,改 js 性价比太低,可以用 burp 拦截并修改请求
构建响应欺骗浏览器理论上可以,不过下一步的那个页面在请求的时候可能会检验 session 看上一步是否已经通过,如果没检验的话或许可以进入 |
8
jugelizi 2016-11-21 15:27:34 +08:00 1
人家后端有验证
别试了 复制页面 JS <script> //linech 2014-6-20 seajs.use 一直到最后 然后删除中间规则 放到 console 里执行就绕过 js 验证的 用户名可用也通过 |
9
hardensky 2016-11-21 16:59:43 +08:00 1
@zhangfanfan 进入下一步页面也没有意义啊 你写个符合格式的就可以看到页面长啥样 而你伪造的话;下一步的下一步还是过不去啊,后台校验后又不会存你的数据。
|