0x00 写在前面的话

最近无聊在抖音上刷视频时,偶然间刷到了Youkia社区,瞬间就勾起了当年的游戏记忆

关于Youkia社区重置密码以及登录请求的分析研究插图
Youkia社区抖音

当年植物大战僵尸ol非常火爆的时候,Youkia也推出了属于它们自己的PVZ游戏

每天守在这个游戏面前等待着日常任务的更新,可以算是当年的快乐

由于近些年新社交应用的兴起,Youkia社区也是逐渐被淘汰,最后被收购合并,现在的Youkia的家园就只剩下了唯一的两个游戏入口和账户信息的修改

关于Youkia社区重置密码以及登录请求的分析研究插图1
Youkia家园
关于Youkia社区重置密码以及登录请求的分析研究插图2
Pvz社区公告

0x01 重置密码请求的研究

在我找到pvzol的组织后,我发现总是有那么些人打着卖资源号的幌子去zha骗一些萌新,为了搞清楚他们是如何做到洗号的,我对Youkia社区的重置密码开始了简单的分析。

找回密码界面

首先我们来到找回密码界面

关于Youkia社区重置密码以及登录请求的分析研究插图3

确实有够简洁的,非常符合十年前的审美观,就只有一个简单的电子邮件找回密码

关于Youkia社区重置密码以及登录请求的分析研究插图4

抓包处理

只要是网络通信,那么我们就有机会通过抓包来获取到一些蛛丝马迹

打开fiddler后,配置好过滤规则,我们输入注册时使用的邮箱地址

关于Youkia社区重置密码以及登录请求的分析研究插图5

并且正常发送了重置密码的请求,并且在邮箱中也是收到了由Youkia社区发来的找回密码的邮件

不过值得一提的是,这里我发送重置密码的请求后,Youkia社区仍然是处于登录状态,并且没有下线,如果猜测正确的话,它的社区并没有心跳这一说法,不能强制下线。并且原密码已经无法再次登录Youkia社区,必须通过点击邮件中的重置邮件地址激活发送的新密码,重新登录Youkia社区

关于Youkia社区重置密码以及登录请求的分析研究插图6

分析请求

关于Youkia社区重置密码以及登录请求的分析研究插图7

参数如下:

NameValue
xajaxpasswordfind
xajaxr1630727499376
xajaxargs[]1525566427@qq.com
xajaxargs[]undefined
请求参数

PS:由于这里请求带有数组,所以重放请求时需要对应参数位置,不要混乱,否则后台是无法下标获取数据

大致分析下,xajax对应的的是action,xajaxr对应的是一串13位的数字

这里我首先想到的是时间戳,不过常见的都是10位,半信半疑下我还是去转换了下Unix时间戳(13位毫秒)

关于Youkia社区重置密码以及登录请求的分析研究插图8
Unix时间戳转换

Bingo,猜想正确,xajaxr对应的是发送重置密码时的时间点,并且与重置的密码相对应

邮件密码分析

关于Youkia社区重置密码以及登录请求的分析研究插图9
重置密码邮件

发送重置密码的请求后,我们会受到由Youkia社区发来的一封邮件,包含了Youkia系统生成的新密码和激活新密码的链接,点击链接后即可通过新密码登录

注意链接的Get参数:

NameValue
emailxxxx@qq.com
strcb623efd6c42c884ab4a4244a75b723d
Get请求参数

str这一段就比较有趣,一共是32个字符,这里我联想到了32位的md5

明文:692VKJH2

密文:cb623efd6c42c884ab4a4244a75b723d

关于Youkia社区重置密码以及登录请求的分析研究插图10

通过比对后确认,验证密码的链接str参数的值就是登陆密码的md5

0x02 伪造密码请求

至此,我们可以通过伪造重置密码请求,达到修改密码的效果

例如,设置xxx@qq.com的密码为Q28EO1HI

md5加密后的密文为:f860ec2526a33c44547c87f67189e9c8

关于Youkia社区重置密码以及登录请求的分析研究插图11
ApiPost请求

请求后,我们成功重置了该邮箱的密码,不过想要再次登录的话,不论你输入什么密码都会显示错误,密码已经随机

猜测:由于确认重置密码时并没有时间戳这个参数,导致后台无法确认是哪个密码,导致密码再次随机

0x03 启用修改邮箱账号功能

关于Youkia社区重置密码以及登录请求的分析研究插图12
修改账号

Youkia社区,还有一个尘封已久的功能,通过验证新的E-mail地址,修改当前账号的登录电邮,写文章前猜测号贩可以通过此项功能达到目的。

抓取文件

调用浏览器的开发者人员工具,选择提交按钮,审查该元素,得到该按钮绑定的js事件为:edit_email();

避免本地缓存影响搜索结果,进入Network选项,选择 disable cache

关于Youkia社区重置密码以及登录请求的分析研究插图13
开发者人员工具

搜索函数名:edit_email(),定位该函数所在js文件,并且通过抓包单独下载下来,或者在fiddler中保存整个响应,保存到本地桌面或者英文目录。

关于Youkia社区重置密码以及登录请求的分析研究插图14
定位hhahanhanshhanshu函数

fiddler中,我们需要选择home.js文件,并且右键→保存为本地文件,打开后进行编辑

关于Youkia社区重置密码以及登录请求的分析研究插图15
下载文件

通过查看该函数,我们可以明确地看到,更换电邮部分函数被官方注释,并且留下了此功能暂时关闭的提示消息,我们修改时将原来注释的代码恢复,并将此功能暂时关闭注释掉即可。

关于Youkia社区重置密码以及登录请求的分析研究插图16
edit_mail代码

以下是修改后的函数代码,要确保函数的括号和分号正确,否则会导致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
fiddler拦截home.js

启用规则后,在浏览器请求home.js文件时,就会自动响应为本地的文件,达到修改网页js的目的

我录制了一段GIF演示拦截home.js文件的实际效果:

我们可以看到,edit_mail已经被我完全修改了,这时我们再点击修改邮箱账号,就不会再出现功能暂时关闭的字样,不过能否修改,还得看服务器上的功能是否被关闭,有不小心的站长前端写了禁止,但是后端并没有禁用此功能,导致了系统的漏洞。不过Youkia社区的运维应该没有这么粗心,能撤的全部撤了,就剩下了一个游戏和充值系统。

请求修改账号

关于Youkia社区重置密码以及登录请求的分析研究插图18

点击提交后,系统正常发送了邮件,并且我也在新的邮箱中收到了由find@youkia.com发送的更换账号请求

关于Youkia社区重置密码以及登录请求的分析研究插图19
重置邮箱账号邮件

该重置账号的链接包含useridcode参数:

NameValue
useridxxxxxx
code32位字符(猜测为md5
重置密码请求参数

不过该code参数的值嗦对应的是什么md5也不得而知,目前已经将该md5值加入md5后台进行解密,想要得到结果可能还要等待很长一段时间。

关于Youkia社区重置密码以及登录请求的分析研究插图20
ApiPost request

不过可惜的是,得到结果是服务器无法处理此次请求,并且显示了以下错误:

关于Youkia社区重置密码以及登录请求的分析研究插图21
服务器繁忙

0x04 盗取猜想

由于我们在上文提到,该游戏和整个社区并没有心跳功能,简要说明,只要拿到你的cookies或者sign的值,那么我们就可以直接对有游戏进行登录。

在我处于登录状态修改密码后,系统只是单一弹出一个密码成功修改的窗口,并没有强制当前用户下线或者游戏下线,这便是该社区甚至整个游戏的一个BUG。在后续的抓包过程中存在interface请求,不过不影响正常游戏和已登录用户。所以可以大胆猜想:

  1. 号贩想方设法登录你的账号
  2. 保存账号的sign值和cookies
  3. 伪造登录请求,直接登录账号或者进行其他洗号行为

以上文章内容仅代表个人观点,如果有兴趣了解关于充值抓包的可以看下这篇文章:

https://blog.eswlnk.com/810.html