JS逆向笔记-记录某测试论坛的js逆向练习

x33g5p2x  于2022-04-08 转载在 其他  
字(2.0k)|赞(0)|评价(0)|浏览(199)

这个网站应该是专门练习的,因为有个地方说不太通,在此只能算是练习,记录下,方便以后进行查阅。

首先访问主页:

他会设置一个cookie值,并且会把加密的salt

带出来。还有个叫lt的东西也会用html的形式传出来。

这个lt,会在发送请求的时候带出去。

输入用户名密码后,点击登录,发送的是这样的body:

username=admin888&password=H1uFJjwe8ZoS04VFZBOCBfma9qdoxrSd%2FND4gBK3%2F8YlVJaQ4ZJFSIO5PLjgZdYTkrgjILDmfXADSDtWJQpZCp%2FOUSX3nOo5zz6fuVHd%2FuU%3D&captchaResponse=hppx&lt=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=LT-3032840-P9cGjCTq3ciu0bTqOitzoL2nzmTLRv1646622551540-mdSp-cas&dllt=userNamePasswordLogin&execution=e1s3&_eventId=submit&rmShown=1

从中可以看到是一样的,只是转成了URI。

注:这里服务器在解码时,必须要偏移量,而从这提交的包中,没有看到对偏移量相关的加密等。在此感觉,这个站点仅仅是个测试站点。但对我也很有启发,后面一篇博文,用这种方式,实现密钥和偏移量的交换。

相关文章

微信公众号

最新文章

更多