JS逆向 | 助力新手 , 两个JS逆向喂饭教程

练手喂饭系列来喽~
这周在读者群顺手搞了个小活动,在群里摸鱼的时候有水友说练手系列能不能来点简单的写详细点。python

JS逆向 | 助力新手 , 两个JS逆向喂饭教程

因此我此次准备了两个比较简单的练手加密,从分析到复写加密一步一步截图, 我就不信这样你还学不会!
JS逆向 | 助力新手 , 两个JS逆向喂饭教程算法

加密一

JS逆向 | 助力新手 , 两个JS逆向喂饭教程

分析请求

先打开受害网站 -> 打开控制台 -> 切换至 XHR
完美,刷新就看到了。浏览器

JS逆向 | 助力新手 , 两个JS逆向喂饭教程

这里要解决的只有两个:markdown

  • 返回的密文
  • 请求中的token

接下来定位加解密位置。cookie

定位加密位置与分析加密

按照以前的套路,咱们第一步是要搜索加密参数名 token编辑器

JS逆向 | 助力新手 , 两个JS逆向喂饭教程
打开 search ,搜索参数名就找到咱们要的 token 了。
JS逆向 | 助力新手 , 两个JS逆向喂饭教程ide

按照搜索的结果文件名,猜也猜到是第二个结果,点击打开就能够看到 token 的生成代码了。函数

JS逆向 | 助力新手 , 两个JS逆向喂饭教程

var token = md5(String(page) + String(num) + String(timestamp));

这段代码咱们能够用 js 实现也能够用 python。
JS逆向 | 助力新手 , 两个JS逆向喂饭教程网站

偷懒一点用 python 实现 token 加密算法:加密

JS逆向 | 助力新手 , 两个JS逆向喂饭教程
按照请求里看到的参数生成 token 试试

JS逆向 | 助力新手 , 两个JS逆向喂饭教程

如今有了 token 参数以后接下来看看这个解密怎么搞:
右键 查看源代码 发现了这个:

JS逆向 | 助力新手 , 两个JS逆向喂饭教程
图中 ip 列表的位置是没有数据的,只有 id ip_list ,这是个惟一值,因此值得再搜索一下:

JS逆向 | 助力新手 , 两个JS逆向喂饭教程

追进去以后就能够看到下面的代码了:

JS逆向 | 助力新手 , 两个JS逆向喂饭教程

打上断点,执行两步能够看到 decode_str 后就开始出现咱们须要的数据了,因此这里的 decode_str 就是咱们要的解密方法:

JS逆向 | 助力新手 , 两个JS逆向喂饭教程

咱们复制到编辑器里调试运行一下:

JS逆向 | 助力新手 , 两个JS逆向喂饭教程
能够看到提示 Base64 未定义, 咱们追进去把 Base64 的算法复制出来:
JS逆向 | 助力新手 , 两个JS逆向喂饭教程

JS逆向 | 助力新手 , 两个JS逆向喂饭教程

再次运行,根据提示缺失 window 对象, 根据以前的方式是缺啥补啥,但咱们先接下来分析一下这里调用的方法:
JS逆向 | 助力新手 , 两个JS逆向喂饭教程

这里调用的是 String.fromCharCode 方法,咱们替换下再次运行:

JS逆向 | 助力新手 , 两个JS逆向喂饭教程
能够看到这里就解出来了。

加密一,完。

加密二

JS逆向 | 助力新手 , 两个JS逆向喂饭教程

分析请求

此次要分析的网站不一样上一个的是,此次网站使用的是 cookie 加密, cookie 的有效期过了以后就会返回一段 js 。
JS逆向 | 助力新手 , 两个JS逆向喂饭教程

使用有效的 cookie 请求咱们须要的数据就在返回的网页中,因此咱们只要解决这段 js 就行了。
JS逆向 | 助力新手 , 两个JS逆向喂饭教程

分析加密

把返回的 js 复制到编辑器里格式化,能够看到代码分为两个部分:
参数定义部分:

JS逆向 | 助力新手 , 两个JS逆向喂饭教程

函数执行部分:

JS逆向 | 助力新手 , 两个JS逆向喂饭教程

直接执行没得出结果,为了方便知道这段代码发生了什么,咱们复制到 浏览器 console 里看看:
为了方便观察,咱们把第二段的 eval 修改成 console.log
能够看到这段代码写入了 cookie:

JS逆向 | 助力新手 , 两个JS逆向喂饭教程

继续分析,咱们把这段 cookie 相关的代码复制出来执行一下:

JS逆向 | 助力新手 , 两个JS逆向喂饭教程

能够看到这里成功生成了一段 cookie 值 和咱们在网页上看到的同样!

JS逆向 | 助力新手 , 两个JS逆向喂饭教程

到这里加密就分析结束了,获取所有代码,请后台回复「JS逆向」
加密二,完。

JS逆向 | 助力新手 , 两个JS逆向喂饭教程