js 逆向系列02-常见加解密一

admin 2024年2月21日23:37:01评论13 views字数 2057阅读6分51秒阅读模式

js 逆向流程

js 逆向的一般流程如下: 

抓包 

调试 

抠js 

改写 

本地运行出值 

请求服务器拿值

常见加密方法分类介绍

对称加密(Symmetric Encryption)

在对称加密中,发送和接收方使用相同的密钥来加密和解密数据。常见的对称加密算法包括:

DES(Data Encryption Standard):是一种对称密钥加密算法,已经不推荐使用,因为它的密钥长度较短,易受到暴力破解攻击。AES(Advanced Encryption Standard):目前最常用的对称加密算法之一,支持128位、192位和256位的密钥长度,安全性较高。特点:加解密速度快,适合大数据量的加密和解密。密钥管理相对容易,但需要确保密钥安全传输。

非对称加密(Asymmetric Encryption)

在非对称加密中,使用一对密钥,包括公钥和私钥,公钥用于加密,私钥用于解密。常见的非对称加密算法包括:RSA(Rivest-Shamir-Adleman):基于大数分解的数学难题,是最早也是最广泛使用的非对称加密算法之一。ECC(Elliptic Curve Cryptography):利用椭圆曲线上的点运算问题来构建的加密算法,相比RSA,在相同的安全级别下,所需密钥长度更短,计算量更小。特点:加解密速度相对较慢,适合于少量数据或者密钥交换。公钥用于加密,私钥用于解密,提供了更好的安全性。适合解决密钥交换和数字签名等问题。

哈希加密(Hash Encryption)

哈希加密是一种单向加密方式,它将任意长度的数据映射为固定长度的哈希值。常见的哈希加密算法包括:MD5(Message Digest Algorithm 5):产生128位的哈希值,由于其存在碰撞风险和安全性问题,已经不推荐用于加密应用。SHA-1(Secure Hash Algorithm 1):产生160位的哈希值,也存在碰撞风险,逐渐被弃用。SHA-256、SHA-384、SHA-512:SHA家族的变种,分别产生不同长度的哈希值,安全性更高。特点:单向加密,不可逆。对于相同的输入,始终产生相同的输出。

tips:对于 MD5,SHA-1 ,可以记住 123456 对应的密文,以便在进行 js 逆向时快速识别出其加密方式。 

明文:123456 

密文:

MD5:e10adc3949ba59abbe56e057f20f883eSHA-1:7c4a8d09ca3762af61e59520943dc26494f8941b

其他编码方式

BASE64encode 等等,其不属于加密,而是一种编码方式。 base64 编码特点:A-Z a-z 0-9 + _ =

sohu.com

查看登录的网络请求,存在加密。

js 逆向系列02-常见加解密一

密文为 e10adc3949ba59abbe56e057f20f883e,很明显这里就是 MD5 的加密方式。(记 123456 密文的原因)

快速定位

tips:找距离断点最近的方法,就是看智能提示(CTRL 键开关),什么时候没有智能提示了,就是该方法的开始 

下面来尝试快速定位查找加密方法。 请求的 url 为 https://v4.passport.sohu.com/i/login/116005 ,post 请求的 payload 为 userid=test%40123.com&password=e10adc3949ba59abbe56e057f20f883e&appid=116005&nf=1 考虑通过以下几种方式来进行查找:

XHRpost body 中的参数名——password,useridurl 特征

XHR

最先想到的方法肯定是 XHR 断点。 打好断点后,点击登录:

js 逆向系列02-常见加解密一

在 send 处断住,可以看到这里已经是加密后的 password。

password

js 逆向系列02-常见加解密一

直接全局搜索 password,结果有数十处。 但是password 值肯定是先有一个对象,再对对象进行赋值等操作,可以通过.password 或者 password =(如果加上空格需要美化输出)来进一步缩小范围。

js 逆向系列02-常见加解密一

可以看到此时只剩下 8 条结果。逐条查看可以看到,显然这里利用了 MD5 加密:

js 逆向系列02-常见加解密一

userid

userid 跟 password 类似,userid=结果只有一处,在当前上下文中查找,也能找到 md5:function(t){...}

js 逆向系列02-常见加解密一

/login

login 同样可以找到:

js 逆向系列02-常见加解密一

123456789、1732584193

js 逆向系列02-常见加解密一

123456789 和 1732584193 都是 md5 加密中默认的模值,如果采用了默认的 md5 加密就必定会出现。 

与前面几种方法不同,搜索这类内容,可以直接跟进加密函数中,再根据调用栈,就能直接跟到加密之前的明文值(此处为 123456)。 

为什么要找加密之前的明文,因为网站可能会将用户的输入作一些拼接过滤等操作(加盐),再进行加密编码等等,因此可能需要从明文开始追踪。在明文跟密文中间的部分,肯定就是加密函数。 

打好断点,运行查看调用栈:

js 逆向系列02-常见加解密一

往上找一个,就能发现明文为 123456:

js 逆向系列02-常见加解密一

原文始发于微信公众号(Crush Sec):js 逆向系列02-常见加解密一

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年2月21日23:37:01
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   js 逆向系列02-常见加解密一https://cn-sec.com/archives/2507750.html

发表评论

匿名网友 填写信息