0x01 背景 撸站难免会遇到需要爆破账号密码的时候,而这时遇到提交账号密码不是明文提交的就略显尴尬了。很多时候我都放弃了,因为一般爆破什么的也不会有好结果。但今天看到一个大佬写的神器,感觉如果是前端进行加密的话,还是可以抗争一下的。
下面就分享一下自己用这个神器的一些心得,来帮助同样基础比较弱的头一次使用的其他小白。
0x02 所需材料

image.png
解压后

image.png
可看到一个简易的phantomjs的server,此时你需要下载phantomjs,
http://phantomjs.org/ 找到自己需要的版本

image.png
解压即可使用,这里为了方便后期修改,把server和要破解的js放到了同一目录

image.png
概括来说就是需要:
- burp及打包好的jar插件,并安装
- phantomjs
- 项目中提供的phantomjs_server.js
0x03 使用流程很简单,即: - 使用phantomjs启动phantomjs_server.js
phantomjs.exe .\phantomjs_server.js(当然这里的phantomjs_server.js需要根据实际破解的东西进行定制化改写) - burp里使用插件连接phantom_server.js,默认是本地1664端口,连接成功会显示true

image.png
- 点击test,server可以收到相关数据,表明测试成功

image.png
- intruter里配置相关的插件就可以转换相关的payload
0x04 定制化改写大致的使用流程了解后,就可以进行简单的尝试,这里的项目中附带了常用的几种加密方法,但是经常实际的需求并不能简单满足于此几种加密算法,所以我们还需对其进行定制化的改写

image.png
那么如何改写,这里先拿base64做一个参照, 原始phantomjs_server.js文件:

image.png
发现很明显是用定制过的server.js去调用了加密算法的js实现了破解

原始phantomjs_server.js文件
定制后的jsEncrypter_base64.js

定制后的jsEncrypter_base64.js
base64.js:

base64.js
所以这里主要是对这块进行修改即可: // 处理函数function js_encrypt(payload){ var newpayload; /**********在这里编写调用加密函数进行加密的代码************/ /**********************************************************/ return newpayload;}举个实战中的例子: 这里在获取短信验证码时会使用smsCheckPwd()方法:

image.png
对这个方法在source里进行搜索,可发现出现在login.js中:

image.png
点击该方法后可发现是由ajaxDirect()完成的发送动作:

image.png
对其进行搜索:

image.png
跟进ajaxDirect:function(params)方法,发现参数是由desParam进行的加密,继续跟进

image.png
最终我们可以锁定是使用的des.js中的strEnc()进行的加密操作:

image.png
下载下来des.js之后,我们可从上文看出三个加密的密钥值,

image.png
对其进行简单分析,即可对phantom_server.js进行定制化的改写,从而达到0x03节中的效果 ;

image.png
|