第二届猿人学web比赛第一题浅记

猿人学第二届第一题 第2届第3题的请求体token逆向 阅读详情
AI摘要

作者参与了一场逆向比赛,目标是解密一道基于Web的加密问题。通过F12分析网络请求,发现了AES和MD5结合的加密方式。然而,实际加密过程在JavaScript中被魔改,涉及Webpack打包的代码。通过断点调试,作者发现了环境判断的影响,特别是location对象的检查。最终,在PyCharm中模拟浏览器环境成功解密,得到了与比赛一致的结果。

上个月的猿人学逆向比赛终于参加了一次,本着嫖一件文化衫的目的与做出第一题的目标,开始了比赛。过程是艰苦的,结果还是满意的,文化衫嫖到了,现在记录一下第一题的过程。(基于补环境)
链接地址:https://match2023.yuanrenxue.cn/topic/1
1、网站分析:

照常F12看发包的请求:

对比多个请求发现变化的加密参数为token与now。话不多说直接开整

2、加密参数分析

老办法先全局搜索,在第一个js文件中就能找到token加密点

哇哦,这么简单,AES后的md5加密。断住验证下。

可以看到网页上加密值与标准库加密值不一致,魔改了加密算法。果然没有这么简单。接下来直接分析js文件吧

3、加密参数逆向

查看js开头与结构发现为webpack,但是又比常见的webpack多了一层

用我的半吊子js知识解释就是,自执行函数主入口是0x2,调用的时候会提前加载它的依赖模块,例如0x2的依赖就是0xc。执行完之后就会将token的值计算出来,之后发送ajax请求。

我们将js代码中的ajax请求删除,将函数定义为全局,然后固定d(页数),e(时间戳)与图中一致,用来测试

如下图类似:

可以看到有返回值了,与ad89a4a42dcf791951274db0fec65768不一致,大致原因为进行了环境判断,修改了算法。

有经验的可能直接全局搜索常见的global、location、 navigation等,本人比较笨,是断住加密点进行单步调试的。

单步到此处发现问题,有一个location的环境检测,对比后发现浏览器中的返回值也是有区别:

题目中的返回值为true

本地直接将此处替换,Q = p(Q, R, S, P, L, 0x12, k[0x3b]),再次重试,打印token值,与比赛题目结果一致。

4、pycharm改写

直接将刚才chrome执行的正确函数pycharm执行

按照提示补充环境

此类直接在浏览器中打上断点进行分析改写,此处对比后能直接改为

经过改写或者删除补充的环境大概为:

但是此时结果还是不一致,上下文进行关键字搜索,发现最后的点

删除了window导致结果不一直,进行改写,执行,结果一致

结尾:之后可能会用扣代码的方式重新实现一遍,可能吧,之后再说吧。

代码获取方式还是跟以前一样,公众号:码字的秃猴,发送:比赛题1,获取

猿人学第二届第二题 第一处是第二处拼接了个时间戳,时间戳好弄,要么是new Date生成的,要么是刚才那个图片包返回的,还有一处是第二处去掉来token=,所以我们直接跟这个变量,很容易就找到生成的地方。每次分页明显抓到两个包,一个数据包一个图片包,但这个图片包很奇怪,每次返回同样的,明显不合理,用fidder抓包或者python逆向下这个包,可以看到是返回一个时间戳。到这儿别慌,这是内存爆破引起的,碰到这样的问题,极大可能是格式监测引起的,我们可以借助压缩代码网站,把格式化后的代码还原回去。那就极大可能是缺少环境。 阅读详情

相关推荐

【简单】 猿人学web第一届 第3题 罗生门

数据接口为https://match.yuanrenxue.cn/api/match/3?page=1这一题的 请求参数 与 cookie 都没有加密参数每次请求数据接口前都会请求 jssm 接口requests 照着请求逻辑去请求,发现是失败的(数据接口返回包含 js标签 代码)

m0_69843492的博客 620

猿人学2023年第二届JS逆向比赛第一题!

第二届Web端猿人学攻防大赛【官方网站】 (yuanrenxue.cn)猿人学第二届JS逆向比赛难度相较于第一节比赛的赛题那真的是难上加难了,打得许多小伙伴道心都快破碎了。接下来我将进行第一题的题解,主要是抠代码,这道题主要使用了MD5和AES算法,这两个算法都魔改了!!!(真的算简单到离谱吗?)

qq_45696543的博客 2273

猿人学web端爬虫攻防大赛赛题解析_第一题:源码乱码

第一题:js 混淆 - 源码乱码1、前言2、题目理解3、逆向(踩坑)分析过程3.1、初步分析3.2、当头一棒3.3、循序渐进3.4、大功告成4、结语 1、前言 接触网络爬虫已经有两三年了,但其实一直没系统的学习过,都是在偶尔有爬数据需求时在网上找教程,应对一些普通的静态网页或者是没有加密参数的ajax请求时没有问题,但现在各类网站越发注重数据保护,制定了很多反爬虫措施,以至于我现有的那点技术储备面对各种花式反扒虫显得捉襟见肘,痛定思痛,还是要认真系统的学习下相关知识。恰巧最近关注的爬虫大佬王平办了个爬虫攻防

仙路尽头谁为峰 1万+

猿人学第二届比赛web端第一题魔改md5,aes纯素思路

逆向 猿人学

weixin_46140616的博客 774

Web逆向实战:从JS混淆到Python复现,破解动态加密参数

在Web开发与数据抓取领域,JavaScript混淆与加密是常见的前端保护技术,旨在防止核心逻辑被轻易分析和复用。其基本原理是通过代码变换(如变量名缩短、控制流扁平化)和密码学方法(如哈希、编码)对关键参数进行动态生成,从而增加逆向工程难度。这项技术的核心价值在于保护业务逻辑和接口安全,是反爬虫机制的重要组成部分,广泛应用于数据接口校验、风控验证等场景。本文以猿人学比赛题为具体案例,深入剖析了如何通过动态抓包、静态分析、断点调试等工程实践手段,定位并还原出关键的加密函数,并最终使用Python的execjs

weixin_33851604的博客 283

猿人学第二届第一题解题小记

猿人学第二届第一题解题小记

猿人学js逆向比赛第一届第四题

本文分析了网页DOM节点的解析与数据提取过程。文章首先通过响应字段和堆栈信息跟踪,发现数据被隐藏于带有j_key的class属性中。通过观察DOM节点的left属性,总结出四条排列规律,包括数值相加为零、特定倍数关系等。作者据此编写了处理代码,包括解析HTML、生成排序索引等关键函数,并手动构建了图片字典。最终实现的解析逻辑能够正确提取并排序隐藏数据,文中展示了关键代码片段和运行效果图,验证了该方法的有效性。

m0_62945506的博客 993

[Spawn service failed. Exiting] ROS2运行turtlebot3_gazebo例程卡住_报错

[Spawn service failed. Exiting] ROS2运行turtlebot3_gazebo例程卡住_报错

Feizhai2的博客 4862

猿人学js逆向比赛第一届第八题

本文探讨了验证码识别的问题,提出通过图像处理和OCR技术结合的解决方案。作者首先使用OpenCV进行图像预处理,包括颜色过滤、二值化和膨胀操作,然后分割出单个字符。尝试了ddddocr和easyocr等现有模型,但识别效果不理想。文章分享了完整的Python处理代码,涉及颜色分析、噪声去除、字符分割等步骤,最终输出处理后的图像和识别结果。虽然当前识别率有待提高,但为验证码识别提供了可行的技术思路和实现方法。

m0_62945506的博客 1011

大彩串口屏+LUA避坑指南:从Flash读写到控件状态配置的5个常见问题

本文针对大彩串口屏的LUA脚本开发,深度剖析了Flash数据存储与控件状态配置中的5个常见陷阱。重点讲解了如何通过标志位安全初始化Flash、正确处理多字节数据转换,以及如何精准配置按钮与文本控件的状态与事件响应,帮助开发者提升开发效率与代码可靠性。

weixin_27945229的博客 242

禅道二次开发(一):从零搭建本地开发与调试环境

本文详细介绍了禅道二次开发的第一步:从零搭建本地开发与调试环境。通过部署官方一键安装包、配置端口与防火墙、连接数据库、设置Samba文件共享,并最终在VSCode中配置PHP智能感知与Xdebug调试,手把手教你建立一个隔离、高效的专属开发工作台,为后续的代码修改与功能扩展奠定坚实基础。

weixin_29003437的博客 322

猿人学刷题系列(第一届比赛)——第一题

本文为猿人学第一届竞赛web题目第一题解题流程讲解,思路仅供参考,如有疑惑或涉及其他问题请私聊本人!!

weixin_43770993的博客 7871

利用ArcMap实现遥感图像语义分割标注的完整流程解析

本文详细解析了利用ArcMap进行遥感图像语义分割标注的完整工作流。从工程创建、数据导入、SHP文件创建,到实战勾画地物、要素转栅格,再到最终的裁剪对齐,提供了每一步的关键操作与避坑指南。该方法特别适合处理大尺寸、带地理坐标的遥感影像,能高效产出精准对齐的图像-标签对,为后续深度学习模型训练奠定可靠的数据基础。

gpu4optimizer的博客 1212

奖金三万,猿人学爬虫对抗大赛来啦

“ 阅读本文大概需要 3 分钟。 ”终于决定搞第一届Web爬虫对抗比赛啦,这一个月小伙伴紧急开发爬虫对抗大赛用题,测试,赶在十月中旬上线啦。猿人学第一届 Web 爬虫对抗大赛的奖品是奖金...

静觅 1006

博图HMI多语言文本列表一键生成攻略:从Excel模板到TIA Portal的完整流程

本文详细介绍了如何利用Excel模板和TIA Portal API实现博图HMI多语言文本列表的一键生成。通过标准化Excel模板设计、解析TIA Portal的XML结构,并结合C#代码实现自动化导入,大幅提升多语言项目的开发效率。特别适用于需要支持多语言版本的自动化设备HMI界面开发。

weixin_26934905的博客 218

llama.cpp部署大模型

llama.cpp如何部署大模型

Eddy的博客 976

JS逆向实战|使用AI分析猿人学第二届第三题的token加密参数

本文章中所有内容仅供学习交流,不可用于任何商业用途和非法用途,否则后果自负,如有侵权,请联系作者立即删除!交给GPT5.4,配合一些MCP和skills进行分析,很快(1小时左右),它就给了代码。但是我用白嫖的claude,配合同样的mcp和skills,始终无法分析出。从这里开始,你就能知道哪些大模型牛逼,和为什么牛逼了。token长度为64.暂时不知道是什么加密。欢迎加入知识星球,学习更多AST和爬。

Python3 爬虫实战 1:应对特殊字体,爬取猫眼电影实时排行榜 444

三态门Multisim电路仿真——硬件工程师笔记

三态门原理及应用摘要 三态门是具有高电平(1)、低电平(0)和高阻态(Z)三种输出的逻辑电路,通过使能端(EN)控制状态切换。高阻态时输出端等效断路,避免信号冲突。其核心应用包括: 总线系统:多设备共享总线时,仅使能选中设备的三态门,其余保持高阻态,防止干扰。 数据选择器:利用三态门切换多路输入信号,简化电路设计。 实现方式分两种: TTL三态门(三极管构成):低电平使能有效,仿真验证输出逻辑与高阻态。 MOS三态门(MOS管构成):高电平使能有效,仿真显示使能信号控制输出状态。 文中还附硬件工程师笔试面试

XU157303764的博客 2006

【JS 逆向百例】猿人学系列 web 比赛第五题:js 混淆 - 乱码增强,详细剖析

进入网页,点击右键查看页面源代码,搜索不到直播间相关数据信息,证明是通过 ajax 加载的数据,ajax 加载有特殊的请求类型 XHR,打开开发者人员工具,刷新网页进行抓包,在 Network 的筛选栏中选择 XHR,数据接口为 5?这几个参数的值是在动态变化的,不进行改写甚至将相关部分注释掉,在本地 node 环境中都是可以运行出结果的,但是用 python 调用的话会报错,证明在前端会对这几个参数进行校验,这几个参数在。赋值,在上一行可以看到熟悉的 _̲。

K哥爬虫 1471

保姆级教程:ABAP 通过 HTTP POST 调用 OData 服务创建业务数据的具体例子

笔者之前的文章发布之后,有朋友在评论区留言,询问 ABAP 除了 Web Service 之外,是否也支持 HTTP 呢?ABAP 这么强大的语言,支持 HTTP 当然不在话下。网上有很多在 ABAP 系统基于 CL_HTTP_CLIENT 工具类,通过 HTTP 协议和第三方系统交互的代码例子。本文介绍笔者项目中一个实际例子,实现的是在 ABAP 系统 A 通过 HTTP 调用 OData 服务,在 ABAP 系统 B 创建业务数据的需求。下面我们按照这个套路来一步步实现。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 697

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

webpack怎么打包apk_JS逆向:Webpack打包后的代码怎么搞?猿人学爬虫比赛第十六题详细题解...

实战地址http://match.yuanrenxue.com/match/16抓包分析地址栏输入 地址,按下F12并回车,发现数据在这里:查看cookie,无加密相关的字段。请求的接口倒是有个m的加密参数,看来这题的主要目的就是看看m参数怎么进行加密的吧。切换 Initiator,这请求也太明显了,点击下面所示的js文件:跟进去并美化后,来到这里:不用过多分析,m加密在这里:r.m ...

weixin_42462474的博客 268

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

【JS 逆向百例】猿人学系列 web 比赛第二题:js 混淆 - 动态 cookie,详细剖析

猿人学系列题解之第二题,动态 cookie 逆向详细解析

K哥爬虫 1793

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

猿人学web端爬虫攻防大赛赛题解析_第十二题:入门级js

第十二题:入门级js1、前言2、解析过程3、代码实现 1、前言 这个入门级js属实让我没想到,是真的很简单,对于新手来说,基本上只要了解什么是base64加密就很容易能还原加密参数了,确实是到零难度的题,在被之前那些中等难得的题虐了一番后,看完这个内心直呼“我又可以了!”,总的来说真的是对新手非常友好的送分题了。 2、解析过程 点开十二题页面直接进入开发者模式,看看有什么加密参数之类的,仔细找了一番也就m这个比较短的字符串应该是加密过的 顺着这个请求,进一步去找该请求的发起者,也就是它的调用栈,点击requ

仙路尽头谁为峰 374

JavaScript混淆代码逆向与Python实现:MD5魔改算法解析

哈希算法是信息安全领域的核心技术,MD5作为经典哈希函数广泛应用于数据校验和数字签名。通过抽象语法树(AST)技术可有效还原混淆代码,分析其核心逻辑。本文以实战案例解析如何逆向魔改MD5算法:首先通过AST反混淆还原代码结构,定位关键加密函数;接着分析其与标准MD5的差异,包括自定义加法运算和修改初始向量;最后详细说明如何将JavaScript实现的魔改算法移植到Python环境,解决32位无符号整数处理和字节序等关键问题。该技术在爬虫开发、接口安全测试等场景具有重要应用价值,特别是处理动态token生成等

weixin_29327977的博客 168

猿人学 web第二题混淆对抗 2021-10-18

在2021年10月18日,猿人学第二题的代码混淆进行了升级,因为之前已经扣过代码了,所以这次主要是做混淆的对抗 首先获取一下反混淆前的代码 url = 'https://match.yuanrenxue.com/match/2' response = requests.get(url) with open('02.js', 'wb') as f: f.write(response.content[8:-9]) 主要分成六个部分 序号 作用 1 大

zjq592767809的博客 1475
上一篇: 国家医保服务平台js逆向(SM4+SM2)
下一篇: 海康威视CVE-2017-7921漏洞查找与利用
AngrySnack
博客等级 码龄9年 78粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值