猿人学对抗赛踩坑记录

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 猿人学对抗赛踩坑记录





在狗哥的带领下 很荣幸拿到了第一



狗哥我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就可以拿到第三题的数据了


第四题

跳转文章

猿人学爬虫攻防大赛12347讲解



第五题

这题有一个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没错了

那要考虑一下你的加密逻辑那个位置


第七题

跳转文章

猿人学爬虫攻防大赛12347讲解


第八题


第九题

先到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的值


第十一题

略(狗哥太忙了没空讲)




讲得有些许匆忙 各位大佬们见谅一下


[完]

相关文章
|
存储 编解码 安全
冥王峡谷安装steamos踩坑记录
记录冥王峡谷安装第三方steamos-holoiso时遇到的一些问题,其它玩家可参考
2292 0
|
2月前
|
SQL Java 关系型数据库
删除几条数据怎么搞
删除几条数据怎么搞
|
6月前
|
编解码 网络协议
Kitex踩坑记录,Kitex超时控制问题
Kitex踩坑记录,Kitex超时控制问题
Kitex踩坑记录,Kitex超时控制问题
|
6月前
|
SQL 关系型数据库 MySQL
【Seata1.5.2 下载 & 配置 & 整合 & 踩坑 & 测试】—— 含各种踩坑记录(详细版)(上)
【Seata1.5.2 下载 & 配置 & 整合 & 踩坑 & 测试】—— 含各种踩坑记录(详细版)
956 0
|
6月前
|
小程序 JavaScript Java
实习记录小程序|基于SSM的实习记录小程序设计与实现(源码+数据库+文档)
实习记录小程序|基于SSM的实习记录小程序设计与实现(源码+数据库+文档)
39 0
|
6月前
|
SQL Java 数据库
【Seata1.5.2 下载 & 配置 & 整合 & 踩坑 & 测试】—— 含各种踩坑记录(详细版)(下)
【Seata1.5.2 下载 & 配置 & 整合 & 踩坑 & 测试】—— 含各种踩坑记录(详细版)(下)
353 0
|
设计模式 网络协议 JavaScript
最近面试点记录总结
最近面试点记录总结
|
应用服务中间件 PHP nginx
如何通过查源码的方式解决编程中遇到的问题?查源码定位问题的思路是什么?
aravel的底层是如何处理HTTP请求的? Laravel的Request是如何实现的? 为什么不需要配置Nginx的url解析,也不需要在Laravel的router中配置参数名称,却可以通过Request接收到参数呢?实现原理是什么?
119 0
如何通过查源码的方式解决编程中遇到的问题?查源码定位问题的思路是什么?
|
编译器 C++
C++中的知识点记录
C++中的知识点记录
116 0
|
数据可视化 前端开发 NoSQL
BUG记录 | 【内附前端福利】
今天在安装VMWare软件的时候,突然报了这个错误
143 0
BUG记录 | 【内附前端福利】