https://match.yuanrenxue.com/match/14
![js逆向-猿人学比赛14题-扣代码破解](/UploadFiles/2021-04-26/160540npq09rvcfq09kcrr.jpg)
snipaste20220821_111233.jpg
14题
fiddler分析接口
![js逆向-猿人学比赛14题-扣代码破解](/UploadFiles/2021-04-26/160613ul05al11up3zalpa.jpg)
14-1.jpg
解析-1
每次请求数据,都会先请求https://match.yuanrenxue.com/api/match/14/m,会带上可疑参数mz,每次请求此参数不变化
![js逆向-猿人学比赛14题-扣代码破解](/UploadFiles/2021-04-26/160650z0c3qcepep000z55.jpg)
14-2.jpg
解析-2
请求数据接口,都会带上可疑参数m,每次请求m都会变
![js逆向-猿人学比赛14题-扣代码破解](/UploadFiles/2021-04-26/160736bo14scosuoourshw.jpg)
14-3.jpg
解析-3
重放攻击,请求数据出错。确定接口被加密。
直接hook cookie 确定加密位置
![js逆向-猿人学比赛14题-扣代码破解](/UploadFiles/2021-04-26/160812ynaxm6zd3uznud8x.jpg)
hook-1.jpg
h-1
![js逆向-猿人学比赛14题-扣代码破解](/UploadFiles/2021-04-26/160946aflama1am22gml4s.png)
扣代码-8.png
h-2
尝试hook cookie失败,Object.defineProperty方法被重写
![js逆向-猿人学比赛14题-扣代码破解](/UploadFiles/2021-04-26/161024pnwowcwqtsznwcn7.jpg)
hook-2.jpg
h-3
![js逆向-猿人学比赛14题-扣代码破解](/UploadFiles/2021-04-26/161104kzh8exxasapelncc.jpg)
hook-3.jpg
h-4
在Object.defineProperty方法被重写赋给新的变量,使用新的变量重新hook 成功![js逆向-猿人学比赛14题-扣代码破解](/UploadFiles/2021-04-26/161220dcdixttog6g1qpq1.jpg)
hook-4.jpg
h-5
![js逆向-猿人学比赛14题-扣代码破解](/UploadFiles/2021-04-26/161306jtutz8t3t3dgkt93.jpg)
hook-5.jpg
h-6
找到可疑参数mz 生成位置,由浏览器环境组成的z数组,然后在base64加密生成。浏览器环境不变这个mz参数就不变,这道题可以直接拿结果用
![js逆向-猿人学比赛14题-扣代码破解](/UploadFiles/2021-04-26/161339w79r9sf69zz7uooi.jpg)
hook-6.jpg
h-7
![js逆向-猿人学比赛14题-扣代码破解](/UploadFiles/2021-04-26/161410i5gnvn2spug8oa85.jpg)
hook-7.jpg
h-8
继续找m参数位置,遇到debugger.直接右键never pause here,跳过debugger后找到加密参数m的生成位置
接下来就是扣代码生成m参数拉
![js逆向-猿人学比赛14题-扣代码破解](/UploadFiles/2021-04-26/161519tdr977igh7h84wnf.jpg)
抠代码-1.jpg
k-1
![js逆向-猿人学比赛14题-扣代码破解](/UploadFiles/2021-04-26/161559obiv0zybkk0yeck8.jpg)
抠代码-2.jpg
k-2
把生成参数m的代码复制到编辑器,然后缺啥补啥的扣
![js逆向-猿人学比赛14题-扣代码破解](/UploadFiles/2021-04-26/161643w5b0wy55cz7ecjf5.jpg)
抠代码-3.jpg
k-3
![js逆向-猿人学比赛14题-扣代码破解](/UploadFiles/2021-04-26/161710k0t049zz4413jt11.jpg)
抠代码-4.jpg
k-4
扣代码过程遇到的问题1,神秘参数被混淆,在页面不能直接找到。先把结果拿来用,继续扣。后面在hook参数的位置。猜测是返回js生成的加密参数
![js逆向-猿人学比赛14题-扣代码破解](/UploadFiles/2021-04-26/161754vepbls21e1z1ase9.png)
扣代码-z.png
k-5
扣代码过程遇到的问题2,d变量的生成是上面提到过的由浏览器环境生成的z数组,可以直接拿结果用。继续扣
![js逆向-猿人学比赛14题-扣代码破解](/UploadFiles/2021-04-26/161850wor4rmbs5rcc843b.png)
扣代码-asn1.png
k-6
![js逆向-猿人学比赛14题-扣代码破解](/UploadFiles/2021-04-26/161913qvnjvpjvl9jjxkll.png)
扣代码-asn1-2.png
k-7
![js逆向-猿人学比赛14题-扣代码破解](/UploadFiles/2021-04-26/162021ahmhc9h4fqbgm6nc.png)
扣代码-6.png
k-8
![js逆向-猿人学比赛14题-扣代码破解](/UploadFiles/2021-04-26/162302yjicc2g0jfhjg5zq.png)
扣代码-7.png
k-9
![js逆向-猿人学比赛14题-扣代码破解](/UploadFiles/2021-04-26/162345v68qq4cnxc7wttqe.png)
扣代码-8.png
k-10
扣代码过程遇到的问题3:发现ASN1未定义,但是在浏览器中window['ASN1] = qM,ASN1是属于window的参数,在全局中是可以找到的。说明利用浏览器环境和node环境的差异弄了window.导致在node环境中找不到ASN1
![js逆向-猿人学比赛14题-扣代码破解](/UploadFiles/2021-04-26/162650a39e7b33y5po38cz.png)
扣代码-9.png
k-11
![js逆向-猿人学比赛14题-扣代码破解](/UploadFiles/2021-04-26/162728c9tenuu6dqzsnef9.png)
扣代码-10.png
k-12
直接用window使用ASN1,运行代码出现死循环,把代码复制到浏览器中运行也是进入死循环,说明不是浏览器指纹问题
![js逆向-猿人学比赛14题-扣代码破解](/UploadFiles/2021-04-26/162827ioztdwt1wtwfx3tt.png)
扣代码-11.png
k-13
![js逆向-猿人学比赛14题-扣代码破解](/UploadFiles/2021-04-26/162909w36ffc5gqgtuhrmd.png)
扣代码-12.png
k-14
这个判断是判断m5函数是是否有换行,有换行就true,所以m5函数不格式化就可以解决,或者直接把判断结果替换为false. 继续往下扣
![js逆向-猿人学比赛14题-扣代码破解](/UploadFiles/2021-04-26/162942zbpsbpr6xlp3pzp3.png)
扣代码-13.png
k-15
扣代码过程遇到的问题4:遇到window未定义,说明window被删了
![js逆向-猿人学比赛14题-扣代码破解](/UploadFiles/2021-04-26/163243z9drdf1yab9akrhr.png)
扣代码-15.png
k-17
![js逆向-猿人学比赛14题-扣代码破解](/UploadFiles/2021-04-26/163313c3ph43z33q8b4yuz.png)
扣代码-16.png
k-18
![js逆向-猿人学比赛14题-扣代码破解](/UploadFiles/2021-04-26/163335e2pcnf9grm9if4y4.png)
扣代码-17.png
k-19
![js逆向-猿人学比赛14题-扣代码破解](/UploadFiles/2021-04-26/163427eehlhhl2zeya2b5p.png)
扣代码-18.png
k-20
![js逆向-猿人学比赛14题-扣代码破解](/UploadFiles/2021-04-26/163501bn1x7qf9knyzs475.png)
扣代码-19.png
k-21
通过重写eval 进行debugger发现很多对浏览器没用的操作而对node环境有用的操作,把对window,navigator,document 的操作注释了。补全一下相关的navigator环境,然后运行代码m参数出来,接下来我们要去看看之前两个神秘参数window['v14']和window['v142']是怎么生成的
![js逆向-猿人学比赛14题-扣代码破解](/UploadFiles/2021-04-26/163535mpjn6a16j16r0pcb.png)
扣代码-20.png
k-22
![js逆向-猿人学比赛14题-扣代码破解](/UploadFiles/2021-04-26/163658qsr9pr39g97lxglr.png)
扣代码-21.png
k-23
![js逆向-猿人学比赛14题-扣代码破解](/UploadFiles/2021-04-26/163751kg3vc5ceuvyq8byu.png)
扣代码-22.png
k-24
确认v14,v142是返回的js生成,直接把返回的js拿过来测试,程序结束不了,检测有定时器。直接把定时器置空,然后程序正常运行。接下来实际测试加密函数看能不能用。
![js逆向-猿人学比赛14题-扣代码破解](/UploadFiles/2021-04-26/163828lf1c4s6oodbjvgkj.png)
扣代码-23.png
k-25
![js逆向-猿人学比赛14题-扣代码破解](/UploadFiles/2021-04-26/164106p5zii155remdmkdr.png)
扣代码-24.png
k-26
![js逆向-猿人学比赛14题-扣代码破解](/UploadFiles/2021-04-26/164113fdwhad3to85chaoj.png)
扣代码-25.png
k-27
测试报错m参数生成有误,利用捕获代码错误语句和浏览器与node的差异,识别否是正常浏览。把上面两个地方修改后。再试试能不能获取数据
![js逆向-猿人学比赛14题-扣代码破解](/UploadFiles/2021-04-26/164205m91h7rl91ggi1imo.png)
扣代码-26.png
k-28
![js逆向-猿人学比赛14题-扣代码破解](/UploadFiles/2021-04-26/164816askxkn8cni8xxixx.png)
扣代码-27.png
k-29
第一页获取到数据,说明js是没有错误的。应该是翻页过程中产生了新的数据变量导致后面参数计算有误。经过一番调试发现this['\x69']、this['\x6a']、this['\x53']每请求一页数据都会有变化,请求下一页数据是会保持上一页的值,所以这三个参数要返回
![js逆向-猿人学比赛14题-扣代码破解](/UploadFiles/2021-04-26/164905r7lq9bysqb8x84h9.png)
扣代码-28.png
k-30
把变量参数加上就可以获取到数据了
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。