0x00 写在前面的话
最近无聊在抖音上刷视频时,偶然间刷到了Youkia社区,瞬间就勾起了当年的游戏记忆
![关于Youkia社区重置密码以及登录请求的分析研究插图 关于Youkia社区重置密码以及登录请求的分析研究插图](https://static.esw.eswlnk.com/2021/09/2021090403295615-473x1024.jpg)
当年植物大战僵尸ol非常火爆的时候,Youkia也推出了属于它们自己的PVZ游戏
每天守在这个游戏面前等待着日常任务的更新,可以算是当年的快乐
由于近些年新社交应用的兴起,Youkia社区也是逐渐被淘汰,最后被收购合并,现在的Youkia的家园就只剩下了唯一的两个游戏入口和账户信息的修改
![关于Youkia社区重置密码以及登录请求的分析研究插图1 关于Youkia社区重置密码以及登录请求的分析研究插图1](https://static.esw.eswlnk.com/2021/09/2021090403341018-1024x734.png)
![关于Youkia社区重置密码以及登录请求的分析研究插图2 关于Youkia社区重置密码以及登录请求的分析研究插图2](https://static.esw.eswlnk.com/2021/09/2021090403385348.png)
0x01 重置密码请求的研究
在我找到pvzol的组织后,我发现总是有那么些人打着卖资源号的幌子去zha骗一些萌新,为了搞清楚他们是如何做到洗号的,我对Youkia社区的重置密码开始了简单的分析。
找回密码界面
首先我们来到找回密码界面
![关于Youkia社区重置密码以及登录请求的分析研究插图3 关于Youkia社区重置密码以及登录请求的分析研究插图3](https://static.esw.eswlnk.com/2021/09/2021090403462847.png)
确实有够简洁的,非常符合十年前的审美观,就只有一个简单的电子邮件找回密码
![关于Youkia社区重置密码以及登录请求的分析研究插图4 关于Youkia社区重置密码以及登录请求的分析研究插图4](https://static.esw.eswlnk.com/2021/09/2021090403474675.gif)
抓包处理
只要是网络通信,那么我们就有机会通过抓包来获取到一些蛛丝马迹
打开fiddler后,配置好过滤规则,我们输入注册时使用的邮箱地址
![关于Youkia社区重置密码以及登录请求的分析研究插图5 关于Youkia社区重置密码以及登录请求的分析研究插图5](https://static.esw.eswlnk.com/2021/09/2021090403521455-1024x386.png)
并且正常发送了重置密码的请求,并且在邮箱中也是收到了由Youkia社区发来的找回密码的邮件
不过值得一提的是,这里我发送重置密码的请求后,Youkia社区仍然是处于登录状态,并且没有下线,如果猜测正确的话,它的社区并没有心跳这一说法,不能强制下线。并且原密码已经无法再次登录Youkia社区,必须通过点击邮件中的重置邮件地址激活发送的新密码,重新登录Youkia社区
![关于Youkia社区重置密码以及登录请求的分析研究插图6 关于Youkia社区重置密码以及登录请求的分析研究插图6](https://static.esw.eswlnk.com/2021/09/2021090403592356-1024x534.png)
分析请求
![关于Youkia社区重置密码以及登录请求的分析研究插图7 关于Youkia社区重置密码以及登录请求的分析研究插图7](https://static.esw.eswlnk.com/2021/09/2021090404004284.png)
参数如下:
PS:由于这里请求带有数组,所以重放请求时需要对应参数位置,不要混乱,否则后台是无法下标获取数据
大致分析下,xajax对应的的是action,xajaxr对应的是一串13位的数字
这里我首先想到的是时间戳,不过常见的都是10位,半信半疑下我还是去转换了下Unix时间戳(13位毫秒)
![关于Youkia社区重置密码以及登录请求的分析研究插图8 关于Youkia社区重置密码以及登录请求的分析研究插图8](https://static.esw.eswlnk.com/2021/09/2021090404112297-1024x380.png)
Bingo,猜想正确,xajaxr对应的是发送重置密码时的时间点,并且与重置的密码相对应
邮件密码分析
![关于Youkia社区重置密码以及登录请求的分析研究插图9 关于Youkia社区重置密码以及登录请求的分析研究插图9](https://static.esw.eswlnk.com/2021/09/2021090410420242.png)
发送重置密码的请求后,我们会受到由Youkia社区发来的一封邮件,包含了Youkia系统生成的新密码和激活新密码的链接,点击链接后即可通过新密码登录
注意链接的Get参数:
Name | Value |
xxxx@qq.com | |
str | cb623efd6c42c884ab4a4244a75b723d |
str这一段就比较有趣,一共是32个字符,这里我联想到了32位的md5值
明文:692VKJH2
密文:cb623efd6c42c884ab4a4244a75b723d
![关于Youkia社区重置密码以及登录请求的分析研究插图10 关于Youkia社区重置密码以及登录请求的分析研究插图10](https://static.esw.eswlnk.com/2021/09/2021090409463032.png)
通过比对后确认,验证密码的链接str参数的值就是登陆密码的md5值
0x02 伪造密码请求
至此,我们可以通过伪造重置密码请求,达到修改密码的效果
例如,设置xxx@qq.com
的密码为Q28EO1HI
md5加密后的密文为:f860ec2526a33c44547c87f67189e9c8
![关于Youkia社区重置密码以及登录请求的分析研究插图11 关于Youkia社区重置密码以及登录请求的分析研究插图11](https://static.esw.eswlnk.com/2021/09/2021090409533328-1024x501.png)
请求后,我们成功重置了该邮箱的密码,不过想要再次登录的话,不论你输入什么密码都会显示错误,密码已经随机
猜测:由于确认重置密码时并没有时间戳这个参数,导致后台无法确认是哪个密码,导致密码再次随机
0x03 启用修改邮箱账号功能
![关于Youkia社区重置密码以及登录请求的分析研究插图12 关于Youkia社区重置密码以及登录请求的分析研究插图12](https://static.esw.eswlnk.com/2021/09/2021090410035781-1024x509.png)
在Youkia社区,还有一个尘封已久的功能,通过验证新的E-mail地址,修改当前账号的登录电邮,写文章前猜测号贩可以通过此项功能达到目的。
抓取文件
调用浏览器的开发者人员工具,选择提交按钮,审查该元素,得到该按钮绑定的js事件为:edit_email();
避免本地缓存影响搜索结果,进入Network
选项,选择 disable cache
![关于Youkia社区重置密码以及登录请求的分析研究插图13 关于Youkia社区重置密码以及登录请求的分析研究插图13](https://static.esw.eswlnk.com/2021/09/2021090410092484.png)
搜索函数名:edit_email()
,定位该函数所在js文件,并且通过抓包单独下载下来,或者在fiddler中保存整个响应,保存到本地桌面或者英文目录。
![关于Youkia社区重置密码以及登录请求的分析研究插图14 关于Youkia社区重置密码以及登录请求的分析研究插图14](https://static.esw.eswlnk.com/2021/09/2021090410112573.png)
在fiddler中,我们需要选择home.js
文件,并且右键→保存为本地文件
,打开后进行编辑
![关于Youkia社区重置密码以及登录请求的分析研究插图15 关于Youkia社区重置密码以及登录请求的分析研究插图15](https://static.esw.eswlnk.com/2021/09/2021090410120242.png)
通过查看该函数,我们可以明确地看到,更换电邮部分函数被官方注释,并且留下了此功能暂时关闭的提示消息,我们修改时将原来注释的代码恢复,并将此功能暂时关闭注释掉即可。
![关于Youkia社区重置密码以及登录请求的分析研究插图16 关于Youkia社区重置密码以及登录请求的分析研究插图16](https://static.esw.eswlnk.com/2021/09/2021090410200186.png)
以下是修改后的函数代码,要确保函数的括号和分号正确,否则会导致js文件问题
function edit_email()
{
var new_email=$.trim($('#new_email').val());
if(!isEmail(new_email))
{
alert('请正确填写要修改的邮箱');
$('#new_email').focus();
return false;
}
if($('#old_email').html()==$('#new_email').val())
{
alert('新的邮箱与原来的邮箱一致,操作不成功');
$('#new_email').focus();
return false;
}
SetPageDisabled();
$('#popdiv_body').html('<p class="popdivBlockTxt">新的邮箱地'+new_email+'需通过邮件确认后才能生效<br />请到该邮箱查收邮件并点击确认链接<br />生效后,请用此Email登录你的Youkia帐户</p><p class="popdivSubmitBtn"><a href="javascript:void(0);" onclick="duty_checkemail(\''+new_email+'\')">确定</a></p><p class="popdivSubmitBtn"><a href="javascript:closeDIV($(\'#popdiv\'));">取消</a></p>');
/*
$('#popdiv_body').html('<p class="popdivBlockTxt">此功能暂时关闭</p>');
setCenter($('#popdiv'));
$('#popdiv').fadeIn('slow');
*/
duty_checkemail(new_email);
}
拦截修改关键文件
修改完成后,保存文件,建议不要修改文件名称,并且在fiddler中选择过滤规则,选中home.js
后添加到我们的自定义规则中,并且将其替换为我们本地的home.js
![关于Youkia社区重置密码以及登录请求的分析研究插图17 关于Youkia社区重置密码以及登录请求的分析研究插图17](https://static.esw.eswlnk.com/2021/09/2021090410283760-1024x810.png)
启用规则后,在浏览器请求home.js
文件时,就会自动响应为本地的文件,达到修改网页js的目的
我录制了一段GIF演示拦截home.js
文件的实际效果:
我们可以看到,edit_mail
已经被我完全修改了,这时我们再点击修改邮箱账号,就不会再出现功能暂时关闭的字样,不过能否修改,还得看服务器上的功能是否被关闭,有不小心的站长前端写了禁止,但是后端并没有禁用此功能,导致了系统的漏洞。不过Youkia社区的运维应该没有这么粗心,能撤的全部撤了,就剩下了一个游戏和充值系统。
请求修改账号
![关于Youkia社区重置密码以及登录请求的分析研究插图18 关于Youkia社区重置密码以及登录请求的分析研究插图18](https://static.esw.eswlnk.com/2021/09/2021090410400028.png)
点击提交后,系统正常发送了邮件,并且我也在新的邮箱中收到了由find@youkia.com
发送的更换账号请求
![关于Youkia社区重置密码以及登录请求的分析研究插图19 关于Youkia社区重置密码以及登录请求的分析研究插图19](https://static.esw.eswlnk.com/2021/09/2021090410433373.png)
该重置账号的链接包含userid
和code
参数:
Name | Value |
userid | xxxxxx |
code | 32位字符(猜测为md5) |
不过该code参数的值嗦对应的是什么md5也不得而知,目前已经将该md5值加入md5后台进行解密,想要得到结果可能还要等待很长一段时间。
![关于Youkia社区重置密码以及登录请求的分析研究插图20 关于Youkia社区重置密码以及登录请求的分析研究插图20](https://static.esw.eswlnk.com/2021/09/2021090410450261-1024x385.png)
不过可惜的是,得到结果是服务器无法处理此次请求,并且显示了以下错误:
![关于Youkia社区重置密码以及登录请求的分析研究插图21 关于Youkia社区重置密码以及登录请求的分析研究插图21](https://static.esw.eswlnk.com/2021/09/2021090410500869.png)
0x04 盗取猜想
由于我们在上文提到,该游戏和整个社区并没有心跳功能,简要说明,只要拿到你的cookies或者sign的值,那么我们就可以直接对有游戏进行登录。
在我处于登录状态修改密码后,系统只是单一弹出一个密码成功修改的窗口,并没有强制当前用户下线或者游戏下线,这便是该社区甚至整个游戏的一个BUG。在后续的抓包过程中存在interface
请求,不过不影响正常游戏和已登录用户。所以可以大胆猜想:
- 号贩想方设法登录你的账号
- 保存账号的sign值和cookies
- 伪造登录请求,直接登录账号或者进行其他洗号行为
以上文章内容仅代表个人观点,如果有兴趣了解关于充值抓包的可以看下这篇文章:
📮评论 (1)