某网站cookie加密生成(一)

最近发现某网站初始化请求失败,cookie做了改版,于是简单分析了下

一、本地分析

在这里插入图片描述
请求之后 会发现状态码是 200 但是返回的是JS代码 em。。
其实这里已经可以发现 是对cookie进行了操作 document.cookie=xxxx

function reload(x) {setCookie("acw_sc__v2", x);document.location.reload();}

这里可以发现是加了acw_sc__v2这个cookie的值 然后页面再reload下

好了 我们直接把这一部分JS代码丢到美化里面 看看
在这里插入图片描述
言简意赅 这个函数直接就是设置cookie 也没加什么混淆 嵌套函数啥的 (-,- 友好)

接着就是分析这个value 也就是这个x是怎么来的了

这里可以发现 是调用了reload函数传了x 我们直接在代码里搜索哪里调用了这个函数

在这里插入图片描述接着你会发现 上面有个定时函数 执行了这个reload函数 然后里面这个arg2 很明显就是加密后的值

那么就看看 这个arg2怎么来的

本地分析的已经差不多了 接着就去调试看看吧

二、调试
1.反调试
在这里插入图片描述
不出所料哈 进入了反调试

果然debugger是少不了的(可以看到字符串加了编码) 那么这里的话 我们这样解决
在这里插入图片描述
直接看上个调用栈
在这里插入图片描述这里会发现 他是为了 生成这个debugger字符串 进行了拼接

好了 这里就不去分析怎么生成的 我们直接干掉这个触发debugger的函数

触发debugger的函数叫 _0x355d23 那么就这样
在这里插入图片描述

我们直接把这个函数置为空函数 为什么这么做?(因为代码后面你会发现还有个定时器)
在这里插入图片描述这里就是触发这个debugger的定时器函数 直接从源头干掉
ok!

反调试过了 接着往下走
在这里插入图片描述
这里会发现 这里会调用arg1的unsbox方法 arg1是字符串 可没有这个方法 那么这个方法哪里来的?

首先要给字符串定义新方法的话 那肯定是要通过 String['prototype']这个属性的
那么往上面看看代码
在这里插入图片描述
在这里插入图片描述
果然在这里就定义了 String的unsbox方法

在这里插入图片描述
这个方法也会返回一段字符串
在这里插入图片描述
接着是把上面那个字符串 再通过hexXor方法 和一个参数生成arg2

在这里插入图片描述
同理 这个hexXor方法在这里

那么再看看这个参数 (经测试 这个参数的值是固定的 可写死 -,-)
在这里插入图片描述
好了 把js代码扣到本地 试试

三、扣代码
先看看 本地生成的 和web端是否一致
在这里插入图片描述
在这里插入图片描述
是一样的哈

ok! 扣出代码 改一下

String['prototype']['hex'] = function hex(_0x4e08d8) {
                var _0x5a5d3b = '';
                for (var _0xe89588 = 0x0; _0xe89588 < this['length'] && _0xe89588 < _0x4e08d8['length']; _0xe89588 += 0x2) {
                    var _0x401af1 = parseInt(this['slice'](_0xe89588, _0xe89588 + 0x2), 0x10);
                    var _0x105f59 = parseInt(_0x4e08d8['slice'](_0xe89588, _0xe89588 + 0x2), 0x10);
                    var _0x189e2c = (_0x401af1 ^ _0x105f59)["toString"](0x10);
                    if (_0x189e2c["length"] == 0x1) {
                        _0x189e2c = '\x30' + _0x189e2c;
                    }
                    _0x5a5d3b += _0x189e2c;
                }
                return _0x5a5d3b;
            }

String['prototype']['unsbox'] = function() {
                var _0x4b082b = [0xf, 0x23, 0x1d, 0x18, 0x21, 0x10, 0x1, 0x26, 0xa, 0x9, 0x13, 0x1f, 0x28, 0x1b, 0x16, 0x17, 0x19, 0xd, 0x6, 0xb, 0x27, 0x12, 0x14, 0x8, 0xe, 0x15, 0x20, 0x1a, 0x2, 0x1e, 0x7, 0x4, 0x11, 0x5, 0x3, 0x1c, 0x22, 0x25, 0xc, 0x24];
                var _0x4da0dc = [];
                var _0x12605e = '';
                for (var _0x20a7bf = 0x0; _0x20a7bf < this['\x6c\x65\x6e\x67\x74\x68']; _0x20a7bf++) {
                    var _0x385ee3 = this[_0x20a7bf];
                    for (var _0x217721 = 0x0; _0x217721 < _0x4b082b['length']; _0x217721++) {
                        if (_0x4b082b[_0x217721] == _0x20a7bf + 0x1) {
                            _0x4da0dc[_0x217721] = _0x385ee3;
                        }
                    }
                }
                _0x12605e = _0x4da0dc['\x6a\x6f\x69\x6e']('');
                return _0x12605e;
            }

function get_awc2(str1){
    r1 = str1.unsbox()
    r2 = r1.hex("3000176000856006061501533003690027800375")
    return r2

}

最重要的来了

接着py模拟试试

在这里插入图片描述

OK! 成了

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值