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

「来源:|Python爬虫与数据挖掘ID:crawler_python」

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

行人刁斗风沙暗,公主琵琶幽怨多。

网址:aHR0cHM6Ly93ZW5zaHUuYcnQuZLmNuL3dlYnNpdGUvd2Vuc2h1LzE4MTAxMENBUkhTNUJTM0MvaW5kZXguaHRtbD9vcGVuPWxvZ2lu

首先抓个包:

手机号密码随便输,点击登陆

此时formdata中可以获取到username、password、appDomain、wenshu.court.gov.cn这四个信息,老规矩先全局搜一波

此处以password为例

从上往下按照的顺序

1.jquery相关,跳过

2.乱七八糟,跳过

3.Login.js,点击文件进入(因为是登陆,所以看login)

两处均可格式化

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

参数已经提示了出来,很明显加密就在此处

但是但是但是,直接搜到没有任何帮助,跟栈才是需要训练的基本功

所以我们接下来按照跟栈的常规套路走一下

现在可以忘掉之前的步骤

还是这个链接,进入initiator面板查看堆栈信息,一眼可见submit和add

但是但是我们还是要从头操作,假装不知道

顺带可以看到整体分为两部分login+jq

(jq可以先不看,直接看不是jq的栈)

所以直接进send、再格式化代码、打上断点、点击登陆

在send函数处a.data里面有我们需要的密文,那么a是哪里来的,a是上面传进来的

继续跟上层堆栈

根据浏览器默认提示,data依然是传入的,继续往上跟

此处c依然是被传入的,继续跟上层

。。。。。。

这里省略这些步骤,还是一样的去分析一下

直接跳到submit这里

在这个位置上已经处于提交请求前,也没有密文是被传入的,大概率就是明文加密的关键行

而且这段代码位置没有return这个字

鉴于作用域问题,在varn处重新下断并点击登陆

现在作用域就被断在了submit处,在post(行)前,就是需要注意的

跟进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),不用说varn=newJSEncrypt,肯定new的是RSA算法

跟进去查看后随便翻翻就能看到

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

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

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




转载请注明:http://www.aierlanlan.com/cyrz/4360.html

  • 上一篇文章:
  •   
  • 下一篇文章: 没有了