https://match.yuanrenxue.com/match/14
js逆向-猿人学比赛14题-扣代码破解

snipaste20220821_111233.jpg

14题


fiddler分析接口
js逆向-猿人学比赛14题-扣代码破解

14-1.jpg

解析-1


每次请求数据,都会先请求https://match.yuanrenxue.com/api/match/14/m,会带上可疑参数mz,每次请求此参数不变化
js逆向-猿人学比赛14题-扣代码破解

14-2.jpg

解析-2


请求数据接口,都会带上可疑参数m,每次请求m都会变
js逆向-猿人学比赛14题-扣代码破解

14-3.jpg

解析-3


重放攻击,请求数据出错。确定接口被加密。
直接hook cookie  确定加密位置js逆向-猿人学比赛14题-扣代码破解

hook-1.jpg

h-1

js逆向-猿人学比赛14题-扣代码破解

扣代码-8.png

h-2


尝试hook cookie失败,Object.defineProperty方法被重写
js逆向-猿人学比赛14题-扣代码破解

hook-2.jpg

h-3

  js逆向-猿人学比赛14题-扣代码破解

hook-3.jpg

h-4

在Object.defineProperty方法被重写赋给新的变量,使用新的变量重新hook 成功
js逆向-猿人学比赛14题-扣代码破解

hook-4.jpg

h-5

js逆向-猿人学比赛14题-扣代码破解

hook-5.jpg

h-6


找到可疑参数mz 生成位置,由浏览器环境组成的z数组,然后在base64加密生成。浏览器环境不变这个mz参数就不变,这道题可以直接拿结果用
  
js逆向-猿人学比赛14题-扣代码破解

hook-6.jpg

h-7

js逆向-猿人学比赛14题-扣代码破解

hook-7.jpg

h-8


继续找m参数位置,遇到debugger.直接右键never pause here,跳过debugger后找到加密参数m的生成位置
接下来就是扣代码生成m参数拉
js逆向-猿人学比赛14题-扣代码破解

抠代码-1.jpg

k-1

  js逆向-猿人学比赛14题-扣代码破解

抠代码-2.jpg

k-2


把生成参数m的代码复制到编辑器,然后缺啥补啥的扣
     
js逆向-猿人学比赛14题-扣代码破解

抠代码-3.jpg

k-3

  js逆向-猿人学比赛14题-扣代码破解

抠代码-4.jpg

k-4


扣代码过程遇到的问题1,神秘参数被混淆,在页面不能直接找到。先把结果拿来用,继续扣。后面在hook参数的位置。猜测是返回js生成的加密参数
js逆向-猿人学比赛14题-扣代码破解

扣代码-z.png

k-5


扣代码过程遇到的问题2,d变量的生成是上面提到过的由浏览器环境生成的z数组,可以直接拿结果用。继续扣
  js逆向-猿人学比赛14题-扣代码破解

扣代码-asn1.png

k-6

js逆向-猿人学比赛14题-扣代码破解

扣代码-asn1-2.png

k-7

     js逆向-猿人学比赛14题-扣代码破解

扣代码-6.png

k-8

js逆向-猿人学比赛14题-扣代码破解

扣代码-7.png

k-9

js逆向-猿人学比赛14题-扣代码破解

扣代码-8.png

k-10


扣代码过程遇到的问题3:发现ASN1未定义,但是在浏览器中window['ASN1] = qM,ASN1是属于window的参数,在全局中是可以找到的。说明利用浏览器环境和node环境的差异弄了window.导致在node环境中找不到ASN1
   
                                      
js逆向-猿人学比赛14题-扣代码破解

扣代码-9.png

k-11

js逆向-猿人学比赛14题-扣代码破解

扣代码-10.png

k-12


直接用window使用ASN1,运行代码出现死循环,把代码复制到浏览器中运行也是进入死循环,说明不是浏览器指纹问题
js逆向-猿人学比赛14题-扣代码破解

扣代码-11.png

k-13

js逆向-猿人学比赛14题-扣代码破解

扣代码-12.png

k-14


这个判断是判断m5函数是是否有换行,有换行就true,所以m5函数不格式化就可以解决,或者直接把判断结果替换为false. 继续往下扣
js逆向-猿人学比赛14题-扣代码破解

扣代码-13.png

k-15


扣代码过程遇到的问题4:遇到window未定义,说明window被删了
js逆向-猿人学比赛14题-扣代码破解

扣代码-15.png

k-17

js逆向-猿人学比赛14题-扣代码破解

扣代码-16.png

k-18

js逆向-猿人学比赛14题-扣代码破解

扣代码-17.png

k-19

  js逆向-猿人学比赛14题-扣代码破解

扣代码-18.png

k-20

  js逆向-猿人学比赛14题-扣代码破解

扣代码-19.png

k-21


通过重写eval 进行debugger发现很多对浏览器没用的操作而对node环境有用的操作,把对window,navigator,document 的操作注释了。补全一下相关的navigator环境,然后运行代码m参数出来,接下来我们要去看看之前两个神秘参数window['v14']和window['v142']是怎么生成的
js逆向-猿人学比赛14题-扣代码破解

扣代码-20.png

k-22

js逆向-猿人学比赛14题-扣代码破解

扣代码-21.png

k-23

js逆向-猿人学比赛14题-扣代码破解

扣代码-22.png

k-24


确认v14,v142是返回的js生成,直接把返回的js拿过来测试,程序结束不了,检测有定时器。直接把定时器置空,然后程序正常运行。接下来实际测试加密函数看能不能用。
js逆向-猿人学比赛14题-扣代码破解

扣代码-23.png

k-25

js逆向-猿人学比赛14题-扣代码破解

扣代码-24.png

k-26

js逆向-猿人学比赛14题-扣代码破解

扣代码-25.png

k-27


测试报错m参数生成有误,利用捕获代码错误语句和浏览器与node的差异,识别否是正常浏览。把上面两个地方修改后。再试试能不能获取数据
js逆向-猿人学比赛14题-扣代码破解

扣代码-26.png

k-28

js逆向-猿人学比赛14题-扣代码破解

扣代码-27.png

k-29


第一页获取到数据,说明js是没有错误的。应该是翻页过程中产生了新的数据变量导致后面参数计算有误。经过一番调试发现this['\x69']、this['\x6a']、this['\x53']每请求一页数据都会有变化,请求下一页数据是会保持上一页的值,所以这三个参数要返回
js逆向-猿人学比赛14题-扣代码破解

扣代码-28.png

k-30


把变量参数加上就可以获取到数据了
标签:
js逆向-猿人学比赛14题-扣代码破解

免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
评论“js逆向-猿人学比赛14题-扣代码破解”
暂无“js逆向-猿人学比赛14题-扣代码破解”评论...

《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线

暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。

艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。

《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。