本文 我将站在一个小白的角度全程分析,
(说人话,看这个站挺有意思,水一篇文章)

背景

一个在银行的朋友找我帮忙刷课,
白天写 思想汇报、做毕设,没倒出时间分析
简单看了一下,属于比较简单的前端校验

问题

当已经有页面刷课的时候,再点击会出现

分析

出现这个首先搜索字串

没有匹配到的话初步判断是混淆,或者后端返回的
然后看一下抓包

不是混淆,

甚至后端返回的字串都没有加密,好家伙。没把我们当外人啊
直接追进去,打断点,看流程

打断点,重新发请求

看到这是一个简单的xml请求

其中r是一个xml对象,arguments是参数(post请求的三个参数)

看堆栈,栈底是jquery,没有魔改,不用跟

栈底有点意思,构造请求的地方,这里直接看出了全部参数的来源,当然,这个我不感兴趣

进入正题,继续跟,跟下面的o,发现是一个JSON的解析

运行,让代码断在return

这个三元表达式不用管,是为了json格式的正常,
然后单步运行

发现又是一个三元表达式
当前状态返回的是true
继续跟,又是一些无聊的跟踪

弹窗是在这个位置出现的,至于Wc()是一个延时调用,
下面在jquery其中b是失败的文本

跟出来之后,到了程序领空,这里用虚拟机eval执行了一下,然后看result


判断一下是否相等,状态不相等,那么
展示提示框

至此,流程全明白了

我们只需要在result处不让他等于”error”或者说抓包拦截,对比正版信息,我们采取第二种,第一种太简单了
第一种只需要HOOK置一下状态,就好了。就跳转了
第二种,抓包打断点
第三种办法,把页面直接在抓包软件中AutoResponderresult写死

目前我们已经三开了,我们抓一下包
先提前浏览器把正常请求的包抓好,

“{‘Status’:’OK’,’Data’:”}”

打断点

然后就断住了

然后简简单单修改一下返回的包,点击break on response让他返回,

偷天换日一下就好了
然后你就会发现,他跳转了,可以多开了
这个过程可以实现自动化。比如采用mitmproxy,拦截返回值,替换

至于对该产品的改进方案吧

  • 返回值加密,或者用wasm

  • 重开界面需要校验后端返回的token等字段

  • 最好的方案,别限制了,谁不知道谁啊,

分类: js逆向

浙公网安备33011302000604

辽ICP备20003309号