0x01
因为之前发现一个超星的信息泄露bug,会泄露手机号啥的,想着我不能因为这个接口导致自己手机号泄露了
0x02
打开超星的账号管理界面 修改手机号 获取验证码的时候抓包
得到一个content 提交验证码的时候再抓包 发现抓不到包
所以怀疑并没有走网络接口 而是本地校验js判断验证码是否正确
审计一波js
点击修改的事件为popupbutton
$(".popupButton").click(function(){ var vCode = $("#vCode").val(); var claCon = $("#claCon").val(); if(vCode == "" || vCode == undefined){ alert("验证码不能为空!"); return; } if(hex_md5(vCode.toUpperCase()+"7Yu3aN2JGiE3").toLowerCase() != getCookie("vlcontent")){ alert("验证码错误!请重新输入"); return; } if(getCookie("invalid") == ""){ alert("验证码已失效!请重新获取") return; } if(flag != claCon){ alert("验证码与输入邮箱不符!"); return; } if(type == "email"){ modifyEmail(); } if(type == "phone"){ modifyPhone(); } })
分析代码 也就是说 超星这逼网站 验证验证码是否正确通过本地js校验
当 hex_md5(vCode.toUpperCase()+"7Yu3aN2JGiE3").toLowerCase() != getCookie("vlcontent")
满足这个条件后便能修改手机号
0x03
所以 一开始我的方法是写一个python脚本 跑四位验证码
后来我想想 草不对啊 我为什么要爆破 我直接把cookie的字段改了不就行了
首先获取一个content和验证码,这两个是匹配的。
当我们修改cookie中vlcontent的字段为 0d95b0f157cea0728a2bc2c4af2de41b 此时我们只要输入验证码为Y96Q 即可