新闻详情

新闻详情

首页 / 资讯中心 / 详情

web狗的JS修养--前端加密篇

发布时间:2026/9/30 2:48:05来源:尧图网络
web狗的JS修养--前端加密篇
前言:在上一篇简单捋了捋js的语法吧,也没说语言特性之类的,这一篇以比较实用的场景来切入吧.感谢师傅的开源靶场:https://github.com/SwagXz/encrypt-labs有docker版本的,里面有介绍自己看吧各位.前置准备:在开始之前简单说一下使用浏览器进行调试.像这样找到你要打断点的地方直接打一个然后刷新一下页面就会有了.如果不知道在哪儿打断点我们不妨在一开始就打断点,当然整个程序的运行过程是按照应有顺序来执行的,对于一些复杂的场景你会看到它一会儿又跳到另一个js文件了,这是正常的.如果是一个登录功能(举个例子)我们打了断点后点一下那个按钮就行了.这几个第一个表示暂停脚本执行也就是说当你想在当前程序执行的进度马上停住就点一下然后一般我会点倒数第二个一步一步执行.中间三个依次是跳过下一个函数调用,进入下一个函数调用,跳出当前函数.可以看到后面会给出每一步的值.也可以打开控制台在当前的控制台作用域直接运行函数.然后下好靶场,当然这并不是生产环境所以js看起来没这么牢.admin/123456直接登录.大家下不好的就git下来源码然后扔给ai让他帮你打一个docker.注意一下如果混淆的話就直接是根目錄,如果不混淆的話要加一個/easy.php.开战:AES固定KEY之前看過一些大佬的文章提到過不必要一上來就想著找加密函數解密函數而是找明文會在哪裏出現.注意到有個easy.js,跟進一下.同時bp挂上看流量aes.php這裏密文就找到了.app.js裏面有這些玩意兒,説明是CBC模式的AES加密搜索一下key.那麽直接在函數開頭下斷點呢?加密前的位置就找到了,當然這是題外話.密文:nArXfVdnoe67UzojAPP2X%2B6qSiznLMBAI3a5Bi%2BzlNzXaUb9%2BgTXusl67b%2BDS9Zwkey:1234567890123456iv:1234567890123456不混淆的就很簡單,看到了easy.js丟給解密工具一把梭了唄就.AES服务端先拿到密文代理http流量直接看到了{aes_key:iiN7ZpQtiX9SwRRESBliVA,aes_iv:0yXVUhZrcGQz\/hVOToAscQ}RSA在app.js中也是很简单就能找到公钥这一关本质上不获取私钥只做加密然后放爆破我们给个示例就结束哈.注意要对特殊字符url编码AESRSA很干净直接看载荷这里给大家看没有混淆的代码吧,清晰一点.这个key和iv是随机数啊.那每次请求的key和iv都不一样呢,这直接给repeater给ban了好家伙,在万能的浏览器找到其他大佬的思路发现可以用覆盖js的方法达到固定iv和key.这个思路有点吊啊.感兴趣去看这个加密对抗靶场enctypt-labs通关 然后自己点调试也能发现RSA加密key和iv.但是这个直接覆盖的思路太骚了.规律key只对password加密了.如果username是admin那么key就是admin666,iv就是9999admin.签名定位一下签名拼接顺序用户名 密码 nonce 时间戳nonceMath.random().toString(36).substring(2)随机字符串给个python脚本吧import hmac import hashlib import time import random import string secretKey bbe56e057f20f883e def gen_nonce(): chars string.ascii_lowercase string.digits return .join(random.choice(chars) for _ in range(10)) def calc_signature(username, password, nonce, ts): data (username password nonce str(ts)).encode(utf-8) h hmac.new(secretKey, data, hashlib.sha256) return h.hexdigest() username admin password 123456 nonce gen_nonce() ts int(time.time()) sign calc_signature(username, password, nonce, ts) print(fnonce: {nonce}) print(ftimestamp: {ts}) print(fsignature: {sign})加签key在服务端这我说啥了给你了弱口令:admin/123456.防重放看到random字段.那很好定位算法了,直接搜random,找对应的js文件.哎呀老师谁闲的蛋疼加密时间戳获取页面输入的username、password生成时间戳timestamp Date.now()使用 JSEncrypt 给定 RSA 公钥加密这个时间戳得到encryptedTimestamp传给后端的 JSON算法明确了但是怎么解决这个repeater呢,刚刚那个文章的师傅提出了用yakit的热加载,由于我几乎不用yakit所以暂时想不到方法,也许我们思路给豆包就出了呢哈哈.总结:我感觉这些简单的东西(当然js逆向本身并不简单,只是这里Xz师傅场景化后就很清晰)交给ai完全没问题但是我们仍然要从这些简单的学起,比如说写个skill啥的,现在整个大概过程就明了了,打断点-找逻辑-定算法-逆向(源码丢ai一把梭).我觉得人工的部分还是有必要的,毕竟我们亲爱的deepseek只会你让他看完所有js文件最后他可能真的只是看了一下,也许他帮你去混淆后你自己看到再把关键点交给它呢,混淆后的js确实很狗屎,前面看那个包也看得出来,而且这个混淆还是比较好抽象的那一类还不是用eval那些玩意儿抽象的.话说现在生产环境真的会这样混淆吗恐怕只有出题目的老hacker想来搞我们这些新手.mmd
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

电网无人机AI巡检闭环方案:从图像识别到工单执行 2026/9/30 5:42:59

电网无人机AI巡检闭环方案:从图像识别到工单执行

简介:本资源是一份面向电力行业数字化转型从业者、电网运维工程师及AI能源解决方案设计者的专业级PPT方案,系统阐述无人机与人工智能深度融合在电力巡检、应急响应与智能决策中的落地路径。内容覆盖背景需求分析、AI核心技术(CV/ML/边缘计算&…

阅读更多 →
地图瓦片机制全解析:栅格与矢量选型、排错与实战 2026/9/30 5:42:58

地图瓦片机制全解析:栅格与矢量选型、排错与实战

我第一次被地图瓦片这个概念击中,是在一个卡了好久都没解决的上线问题里:用户在高德地图上拖动缩放,页面突然白屏,打开 Network 面板,几百个图片请求同时涌出来,浏览器直接被拖崩溃。后来我才意识到&#x…

阅读更多 →
COZE低代码AI应用开发实战:从工作流搭建到避坑指南 2026/9/30 5:42:58

COZE低代码AI应用开发实战:从工作流搭建到避坑指南

之前我们在系列文章里把 AI 应用开发的整体框架捋了一遍,这一节终于落到具体平台,先讲平台一:COZE。如果你关注过国内的低代码 AI 应用开发,大概率见过“扣子”这个名字,COZE 就是它的英文品牌名。简单说,C…

阅读更多 →
Jev模型与AI Agent实战:从工具调用到TypeSafe AI的落地指南 2026/9/30 5:42:58

Jev模型与AI Agent实战:从工具调用到TypeSafe AI的落地指南

1. 一个“不会聊天”的模型,凭什么在 Agent 圈子里火了最近这段时间,如果你混迹在 AI 开发者的圈子里,大概率会频繁听到一个名字:Jev。有意思的是,围绕它的讨论几乎都带着一种反直觉的调调——“这个模型不太会聊天&am…

阅读更多 →
Claude Opus 5.5发布:Agent稳定调用、API报错排查与AI速递工作流实战 2026/9/30 5:42:58

Claude Opus 5.5发布:Agent稳定调用、API报错排查与AI速递工作流实战

9月23日这周的AI圈,最受关注的消息无疑是Anthropic发布Claude Opus 5.5。作为衍辉AI速递的编辑,我的工作台从当天早上开始就一直开着三个东西:官方文档、API状态页、还有社区讨论群。这篇文章不准备给你灌“AI改变世界”的鸡汤,只…

阅读更多 →
AI+CAD工程落地实战:从Demo到产线的避坑指南 2026/9/30 5:42:51

AI+CAD工程落地实战:从Demo到产线的避坑指南

1. 为什么“AI CAD”的Demo看起来很美,工程落地却处处碰壁过去一年多,我参与过三个和AI辅助CAD相关的项目,有做图纸信息提取的,有做参数化建模自动化的,也有做设计合规检查的。说实话,每次立项的时候大家都…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉