“学生空间“js逆向pwd加密

背景

login_api中对password进行了加密,整个逆向过程还是比较简单的,加密过程也是一目了然,没有什么坑点。无论是js定位,还是js代码的阅读,对初学者都比较友好,很适合练手

url:(base64) aHR0cHM6Ly94anNray5vcGVuLmNvbS5jbi9zdHVzcGFjZS1hdXRoLyMvbG9naW4=

逆向过程

一、首先进行抓包分析,随便输入各项值,其中密码为"123456"。
模拟登录后肯定是显示登录失败的,得到该api参数如下,pwd被进行了加密
在这里插入图片描述

其中的key为验证码的key,点击"换一张"可抓包到相关接口在这里插入图片描述
二、

  1. 直接全局搜索password, 发现并不多。直接看吧,其中的jquery/axios/vue可先不看,这三个都是前端框架,一般来说,加密不会置于其中,尤其是对于小站来说,大站除外,这种情况建议都先pass掉,去其他js文件里找。
    在这里插入图片描述
  2. 然后我们看app.3bd8519c.jschunk-4168xxx.js两个文件,可以看出后者更像是注册操作。所以我们先去app.3bd8519c.js文件里挨个看,对你觉得怀疑的地方都打上断点找找看吧。如下,可得

t中包含了username,pwd(明文)等元素。
Object(d.a)是个方法,将pwd传入后就变成了密文,且跟我们的login_api一致
到这基本就可以确认加密位置了

在这里插入图片描述三、我们开始进入Object(d.a)函数中寻找加密过程,可以看到加密过程还是简单的,就两个加密函数c和r,挨个进入查看

toUpperCase(): 将字符串全转成大写
其中e参数是我们的明文pwd
函数c是md5加密、函数r是sha1加密(下图可见)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
至此,我们知道了我们的明文-密文过程:pwd转大写后先经过c(md5)加密得到t --> 对t转大写后再经过r(sha1)加密得到n --> 对n转大写后再进行一次r(sha1)加密则得到最终的pwd密文。
直接上代码验证:

a = '123456'
x = md5()
x.update(a.encode(encoding='utf-8'))
aa = x.hexdigest()
# print(aa)
y = sha1()
y.update(aa.upper().encode(encoding='utf-8'))
aaa = y.hexdigest()
# print(aaa)
z = sha1()
z.update(aaa.upper().encode(encoding='utf-8'))
aaaa = z.hexdigest()
print(aaaa.upper())

# >>> 8EFC459F5837CCE06914D8C41AFDBC47A5B2AD5D

结果一致

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值