0x01 初探网站
网站截图如下:
目前没有账号密码,需要登录才能进一步渗透,那就注册一个,结果发现注册要授权码,还要验证码,沃日!!!
0x02 请求参数分析
一看这请求加密地死死的,头部中还有一些自定义 参数,看着头疼
加密请求和响应:
自定义头部参数:
0x03 浏览器调试JS
请求加密过程
打上任何XOR或提取
的断点,点击注册:
先一直步过,一边观察JS代码和变量值,寻找加密和解密相关的地方。数次步过后,找到一处关键点,如下:
接着打开WebStorm
,新建一个nodejs
项目,打开 终端安装jsdom
模拟简单的浏览器环境,避免部分复制过去的代码报错:
npm install jsdom
前端的加密一般都会采用知名的加密库,最常用的就是CryptoJS
和JSEncrypt
,分别搜索下关键词,确实使用了CryptoJS
:
复制reqMake
的代码至WebStorm
,遵循缺啥补啥的原则,md5
的话直接用CryptoJS
的,其他得去JS
里找了:
鼠标悬停可以查看对象里的值,可以跟进函数位置,其中config.vk
、config.nc
、config.aesign
都是固定值可以看得到:
定位enP
函数位置后发现加密似乎是DES
加密,且dnP
、dnD
也都在附近,其中Base64
、Latin1
都属于CryptoJS
的组件,直接拿来用就行,其他函数跟进去一并复制到WebStorm
:
des
函数:
des
函数中还有一个des_createKeys
一并复制: