JS逆向笔记-记录某测试论坛的js逆向练习
Posted IT1995
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS逆向笔记-记录某测试论坛的js逆向练习相关的知识,希望对你有一定的参考价值。
这个网站应该是专门练习的,因为有个地方说不太通,在此只能算是练习,记录下,方便以后进行查阅。
首先访问主页:
他会设置一个cookie值,并且会把加密的salt
带出来。还有个叫lt的东西也会用html的形式传出来。
这个lt,会在发送请求的时候带出去。
输入用户名密码后,点击登录,发送的是这样的body:
username=admin888&password=H1uFJjwe8ZoS04VFZBOCBfma9qdoxrSd%2FND4gBK3%2F8YlVJaQ4ZJFSIO5PLjgZdYTkrgjILDmfXADSDtWJQpZCp%2FOUSX3nOo5zz6fuVHd%2FuU%3D&captchaResponse=hppx<=LT-3032376-qI7M4Pc15tRwukqt4nKojGlPuUL5gx1646621586496-mdSp-cas&dllt=userNamePasswordLogin&execution=e1s1&_eventId=submit&rmShown=1
这里重新刷新了下页面,上面的salt和lt会改变,下面来分析下这个password。关键代码已经定位到此处,下个断点:
function _gas(data, key0, iv0)
key0 = key0.replace(/(^\\s+)|(\\s+$)/g, "");
var key = CryptoJS.enc.Utf8.parse(key0);
var iv = CryptoJS.enc.Utf8.parse(iv0);
var encrypted = CryptoJS.AES.encrypt(data, key,
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
);
return encrypted.toString();
function encryptAES(data, _p1)
if (!_p1)
return data;
var encrypted = _gas(_rds(64) + data, _p1, _rds(16));
return encrypted;
function _ep(p0, p1)
try
return encryptAES(p0, p1);
catch (e)
return p0;
var $_chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678';
var _chars_len = $_chars.length;
function _rds(len)
var retStr = '';
for (i = 0; i < len; i++)
retStr += $_chars.charAt(Math.floor(Math.random() * _chars_len));
return retStr;
从中可以知道密码加密是这样的
加密字符串:64位随机数+密码;
密钥:登录首页时服务器给的16位字符串。
偏移量:16位随机的字符串。
加密方式:CBC;
填充:pkcs7
比如这样的:
他的data是:fa7B3ixA4EP7YBQfjPtbn6PX8THKAYSWD6ncB8RhrNxy5aAcdQWc63PnkGbf8w5padmin888
key0是:Jaj2b6QTiljjdd6J
iv0是:XMZb5i5FEfP4YjSA
用在线AES加密试下:
GPUjEIFA0wavbfPL9xVlVPE0C/Id2lZfZtiuNfc0Dk4+nA2UD9syrng7xn3PhFrhVRiTI4sMrqfrd+x7Um6REyHwxvyJI38ZoykQAC+SelQ=
看下程序他跑出来是多少
发现是一样的。看看发的包是不是一样的:
username=admin888&password=GPUjEIFA0wavbfPL9xVlVPE0C%2FId2lZfZtiuNfc0Dk4%2BnA2UD9syrng7xn3PhFrhVRiTI4sMrqfrd%2Bx7Um6REyHwxvyJI38ZoykQAC%2BSelQ%3D&captchaResponse=apcf<=LT-3032840-P9cGjCTq3ciu0bTqOitzoL2nzmTLRv1646622551540-mdSp-cas&dllt=userNamePasswordLogin&execution=e1s3&_eventId=submit&rmShown=1
从中可以看到是一样的,只是转成了URI。
注:这里服务器在解码时,必须要偏移量,而从这提交的包中,没有看到对偏移量相关的加密等。在此感觉,这个站点仅仅是个测试站点。但对我也很有启发,后面一篇博文,用这种方式,实现密钥和偏移量的交换。
以上是关于JS逆向笔记-记录某测试论坛的js逆向练习的主要内容,如果未能解决你的问题,请参考以下文章
朴实无华 Python JS逆向实战:某8同城JS逆向,淦就完事了~~~
朴实无华 Python JS逆向实战:某8同城JS逆向,淦就完事了~~~
朴实无华 Python JS逆向实战:某8同城JS逆向,淦就完事了~~~