JS逆向 | 手把手教你某书网登陆思路解析

共 1824字,需浏览 4分钟

 ·

2021-10-09 18:52

点击上方“Python爬虫与数据挖掘”,进行关注

回复“书籍”即可获赠Python从入门到进阶共10本电子书

行人刁斗风沙暗,公主琵琶幽怨多。
网址:
aHR0cHM6Ly93ZW5zaHUuY291cnQuZ292LmNuL3dlYnNpdGUvd2Vuc2h1LzE4MTAxMENBUkhTNUJTM0MvaW5kZXguaHRtbD9vcGVuPWxvZ2lu
 
首先抓个包:
手机号密码随便输,点击登陆
 

此时form data 中可以获取到 usernamepasswordappDomainwenshu.court.gov.cn这四个信息,老规矩先全局搜一波
 
此处以password为例
 

从上往下按照123的顺序
1. jquery相关,跳过
2. 乱七八糟,跳过
3. Login.js,点击文件进入(因为是登陆,所以看login)
 

两处均可格式化
 

继续搜,现在有8处,在return处全部打上断点(其实就是45)
 

参数已经提示了出来,很明显加密就在此处
但是但是但是,直接搜到没有任何帮助,跟栈才是需要训练的基本功
所以我们接下来按照跟栈的常规套路走一下
现在可以忘掉之前的步骤
 

还是这个链接,进入initiator面板查看堆栈信息,一眼可见submitadd
但是但是我们还是要从头操作,假装不知道
顺带可以看到整体分为两部分 login + jq
 

(jq可以先不看,直接看不是jq的栈)
所以直接进send、再格式化代码、打上断点、点击登陆
 
 
在send函数处 a.data里面有我们需要的密文,那么a是哪里来的,a是上面传进来的
继续跟上层堆栈
 
根据浏览器默认提示,data依然是传入的,继续往上跟
 


 
此处c依然是被传入的,继续跟上层
。。。。。。
这里省略这些步骤,还是一样的去分析一下
 

直接跳到submit这里
在这个位置上已经处于提交请求前,也没有密文是被传入的,大概率就是明文加密的关键行
而且这段代码位置没有return这个字
鉴于作用域问题,在var n处重新下断并点击登陆
 

现在作用域就被断在了submit处,在post(519)前,就是需要注意的
跟进o.exec进行查看,return处下断
 

继续跟进return 处的 a函数进行查看


跟进来之后,这个a函数发现无法跟进,其实还是作用域问题,那么第8行下断就可以跟进去了
 

刚才还提示第7行,现在变成了17行,继续跟进去(参数提示是username,需要再断一下变成password)
 

这样就好了,而且也提示第39行了,继续跟进
 

这就又回到了我们熟悉的45行
因为现在混淆代码越来越多,转码器使用的人也越来越多,代码不可读是常态,这种情况下经常搜不到,定位不到关键加密代码,跟栈就是唯一的基本功
接下来i.createObj 和i.encodePassword分别查看
i.createObj: 
 

就是返回一个对象,对象中的password就是密码加密
 
i. encodePassword
 

e就代表传入的密码明文
t就代表密钥
看见n.setPublicKey(t),不用说var n = new JSEncrypt,肯定new的是RSA算法
跟进去查看后随便翻翻就能看到
 

 
那当然就是RSA了,接下来可以断点分析分析,然后用py或者套js的标准加密库实现
 

或者也可以按照webpack的扣代码手法把代码cv出来。

小伙伴们,快快用实践一下吧!如果在学习过程中,有遇到任何问题,欢迎加我好友,我拉你进Python学习交流群共同探讨学习。

------------------- End -------------------

往期精彩文章推荐:

欢迎大家点赞,留言,转发,转载,感谢大家的相伴与支持

想加入Python学习群请在后台回复【入群

万水千山总是情,点个【在看】行不行

/今日留言主题/

随便说一两句吧~~

浏览 49
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报