在狗哥的带领下 很荣幸拿到了第一
狗哥我d神
狗哥我d神
狗哥我d神
狗哥我d神
狗哥我d神
狗哥我d神
狗哥我d神
狗哥我d神
有感兴趣的哥哥可以加交流群:747776374
里面全是大佬
第一题
进来先是给你来个无限debugger
只要再第二行打上never pause here 然后放行就不会被断下来了
整块加密逻辑都在html的最后一行里 拿到手格式一下就能很清晰的看出来了
var timestamp = Date.parse(new Date()); var m = oo0O0(timestamp.toString()) + window.f; var list = { "page": window.page, "m": m + '丨' + timestamp / 1000 };
对着上面这个逻辑缺啥补啥就行了 别忘了定义
document.e = 'fromC'; document.f = 'charCo'; document.g = 'harCode'; document.h = 'deAt';
第二题
有人找不到加密位置
其实细心的人能看到你访问第二题的时候就做了一次跳转了
用调试工具发包的时候也能看到 就是一个sojson
直接copy代码去猿人学里面的解混淆里面解出来看看
地址:http://tool.yuanrenxue.com/decode_obfuscator
解出来就剩下俩百多行了
特别注意这个函数 是一个内存爆破 用的时候可以把这个函数去掉(有好几处)
去掉之后会提示你缺少qz 再把qz补上就行了
补完环境接着调用后直接输出document["cookie"]就可以拿到cookie值了
第三题
这一题名罗生门 啥意思自行百度 挺哲学的 反正我不懂
坑人的点主要在协议头 要带上协议头才能访问
可以用FD抓包然后再用python发包测试不同
通过最后测试 带上协议头访问logo拿到cookie就可以拿到第三题的数据了
第四题
跳转文章
第五题
这题有一个console.log爆破我内存 这怎么能忍 之前把我电脑卡死了好几次
FD直接替换掉console.log这个函数 反正我们能输出的函数大把呢
html页面进来尾部格式化后看到一段sojson 你们也可以去解开看看
我之前了解过流程我就直接下断eval了
往后跟就能进到虚拟机
找到m的加密都下断 注意原文和出来的密文
明说了 这个b就是魔改过的md5
然后后面的加密RM4hZBv0dDon443M 是套库的AES key 为m的明文
加密原文为之前b加密后的五个结果
说一说第五题坑人的点 如果node算出来的值和网页的值不一致 就要考虑一下你是不是踩坑了
为了保持一致 建议还是从网页中拿出他真正的值替换进去 如果你们要补上
把这个魔改md5过掉再套一个AES这道题就结束了
第六题
加密逻辑
整个加密逻辑清晰可见 然后就靠你们自己改写了
进入r里面看整个js有好几处坑
先是一处表情混淆 做的事在第24行
翻译下来就是
Function('window.o=1')('_')
然后是把你的navigator和window重新定义了一下 这俩处要去掉
然后js就能运行起来了 结果并不能通过
要在js里面寻找有俩处jsfuck 浏览器算一下值赋值进去就行了
如果扣下来能用 但只能获取到第一页
就证明js没错了
那要考虑一下你的加密逻辑那个位置
第七题
跳转文章
第八题
略
第九题
先到html页面拿到主要逻辑js
可以看到是sojson加密 可以用AST解一下混淆 很方便看
这里就能看到俩个坑了 js把你的window 和global处理掉
通过这里可以观察出 这个js的值是更新的 我们要拿出来用就用正则匹配
接着就是分析decrypt
进到decrypt里面 全部复制粘贴
然后去掉我圈出来的无用代码(会内存爆破)
跳到头部 将 这段头部压缩 不然同样内存爆破
再搜索一下 window 这俩行会重置你的window和global 同样去掉
最后补上一点环境再和前面说的那段js拼接一下
就能运行拿到document["cookie"]了
第十题
先过掉debugger
先下一个XHR断点然后刷新
断下来后去掉XHR断点后在f.open下断放行
当url为/api/match/10的时候进入f.open函数
此时加密的函数就在这里面了 一步一步跟着看
当我们跟到算出第一段值
_yrxmEu = aiding_5702(_yrxays, _yrxVMl, _yrxR7k, _yrxJ_8);
接着继续跟
_yrxrqQ = _yrxrqQ[_yrxQ9C[8]](_yrxcze, _yrxBXT(775, _yrx7jl) ? 1 : 0, _yrxyqC || 0, _yrxBXT(789))
算出了第二段值的数组
在经过_yrxwbi函数处理为字符串
最后拼接这俩段就是m的值了
剩下的你们就慢慢扣啦
坑人点在获取了 offset的值填进去
以及这个js里面的值是会变动的
例如79这个的值 还有offset返回的值 一共有三处
我的做法是正则替换进去 因为我没去补环境 如果是补环境的话直接解密拿到js补头运行就行了 过程过于繁琐 肝不够大
这个js是在html页面计算出来的
搜索一下页面就能找到啦
流程是 先算出js 然后运行js拿到m的值
第十一题
略(狗哥太忙了没空讲)
讲得有些许匆忙 各位大佬们见谅一下
[完]