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逆向餵飯教程

相關文章
相關標籤/搜索