JS逆向实战之混淆加密和AES加密的破解

简介: JS逆向实战之混淆加密和AES加密的破解

640.jpg

圣诞节到了, 这不,我来送 "礼物" 了,X江酒店登录页面的参数加密破解。地址如下:

aHR0cHM6Ly9ob3RlbC5iZXN0d2Vob3RlbC5jb20vTmV3TG9naW4v

浏览器输入上方解密后的地址,F12 打开浏览器开发者工具,随意输入一个账号和密码。这里密码输入我一般用的 123456,抓包之后如下图:

640.jpg

抓包

有两个加密的参数 black_boxpassword.

640.jpg

这里提供两种定位加密代码的方法:

1、search 栏搜索上述两个加密参数;

2、这是个 xhr 的请求,可以通过下 xhr 断点来定位

通过 “black_box” 搜索,结果只有一个 JS 文件。

640.jpg

点击左下角的大括号美化 JS,定位到加密位置。打上断点640.jpg


重发请求,请求会在断点处停下来. 这个 fmOpt.getinfo() 函数就是我们要找的 black_box,断点停下后,可以点进去640.jpg


看到这些奇奇怪怪的变量,而且所有变量名看起来都长的差不多。你心里肯定在想,这是什么鬼。别慌!这就是 JS 混淆后的代码。直接拉到最上面,可以看到有很多变量的定义

640.jpg

所以这部分代码,我们是需要扣出来的。如果你觉得混淆的代码看起来非常的难受,你可以选择写个脚本用正则或者 replace() 来做替换,比如你可以在 Conlose 输出查看它的庐山真面目

640.jpg

当然,在这里不替换也可以执行。无论你选择了何种方法,前提条件都需要找到完整代码,不能有遗漏,否则执行不了。

640.jpg

我们主要扣取的代码是 oO00oo 对象中的 OOQo0o 函数。

640.jpg

所以里面定义变量或对象都需要扣取。扣完之后,通过调试来判断还缺少哪些变量,这里通过浏览器来进行调试,点击 sources,选择 +New snippet,粘贴上我们刚扣取的代码

640.jpg

文件名称可以随意命名,之后右键选择运行

640.jpg

运行完之后在下方 conlose 进行调试!一般都要经过反复调试添加代码后,才能正常运行。这里直接出结果了。

640.jpg

black_box 参数完成了,接下来是 password !  重发请求,断点继续停在了 black_box 加密处!

640.jpg

可以看到,在对 black_box 加密之前,640.jpgpassword 就已经完成加密了。所以我们根据调用栈往前找


前面两步就能找到 password 的加密代码,看到这个 encryptAES 有没有很熟悉,没错就是 AES 加密!遇到这种加密你甚至都不用扣代码…

640.jpg

好了,一切都解开了!密钥 n,偏移量 a,我们直接用 crypto-js 来执行!

640.jpg

完美!和抓包的结果一致,可以睡觉了..下次再见~


相关文章
|
12天前
|
设计模式 前端开发 JavaScript
【JavaScript 技术专栏】JavaScript 设计模式与实战应用
【4月更文挑战第30天】本文探讨JavaScript设计模式在提升开发效率和代码质量中的关键作用。涵盖单例、工厂、观察者、装饰器和策略模式,并通过实例阐述其在全局状态管理、复杂对象创建、实时数据更新、功能扩展和算法切换的应用。理解并运用这些模式能帮助开发者应对复杂项目,提升前端开发能力。
|
1月前
|
JavaScript 前端开发 算法
JavaScript 中的 if 判断:深入理解、实战应用与进阶技巧
【4月更文挑战第7天】探索 JavaScript 中的 if 判断语句,它是构建逻辑清晰程序的基础。了解其概念、语法、应用示例及编程技巧,包括条件控制、else if 结构、三目运算符。注意条件表达式简洁性,避免 falsy 值陷阱,利用逻辑运算符优化,并减少 if 嵌套。实践这些技巧将提升编程能力和代码质量。
24 0
|
1月前
|
JavaScript 前端开发 算法
JavaScript 中算术操作符:全面解读、实战应用与最佳实践
【4月更文挑战第5天】本文探讨JavaScript中的算术操作符,包括加、减、乘、除、求余、自增、自减及复合赋值等,强调理解与熟练运用它们对提升编程效率和代码准确性的重要性。文中通过示例介绍了各种操作符的用法,同时提醒注意数据类型转换、浮点数精度、除以零错误以及利用短路求值优化逻辑等问题。通过学习,读者能更好地掌握算术操作符在不同场景的应用,提升编程技能。
23 1
|
1月前
|
Linux 数据安全/隐私保护 Windows
aes加密在linux下会生成随机key的解决办法
aes加密在linux下会生成随机key的解决办法
20 2
|
2月前
|
PHP 数据安全/隐私保护
在PHP中使用AES进行加密和解密
在PHP中使用AES进行加密和解密
|
3月前
|
存储 算法 安全
【加密算法】AES对称加密算法简介
【加密算法】AES对称加密算法简介
|
3月前
|
安全 小程序 数据安全/隐私保护
aes加密算法python版本
aes加密算法python版本
44 0
|
4月前
|
JavaScript Android开发
AutoJs4.1.0实战教程---js文件打包发布成APK文件
AutoJs4.1.0实战教程---js文件打包发布成APK文件
163 0
AutoJs4.1.0实战教程---js文件打包发布成APK文件
|
4月前
|
算法 安全 物联网
全面了解AES加密:入门指南(二)
全面了解AES加密:入门指南
|
4月前
|
移动开发 JavaScript 安全
js的常见的三种密码加密方式-MD5加密、Base64加密和解密和sha1加密详解总结
js的常见的三种密码加密方式-MD5加密、Base64加密和解密和sha1加密详解总结
125 0