实战3-cookie参数acw_sc_v2

目标网站

aHR0cHM6Ly93d3cubHlkaC5jb20vaml0dWFuLw==

1.分析网站

在网站中看到两个请求,我们想要的数据在第二个请求中

分析第二个请求,发现在第二个请求中需要携带两个cookie值分别是acw_tc和acw_sc__v2

往上看第一个请求,在第一个请求中发现,服务器会返回cookie值中的acw_tc

2.获取cookie值中的acw_tc

url = "aHR0cHM6Ly93d3cubHlkaC5jb20vaml0dWFuLw=="
response = requests.get(url, headers=headers)
cooks = {}
for k, v in response.cookies.items():
    cooks[k]=v
print(cooks)

得到acw_tc值

3.获取cookie值中的acw_sc__v2

继续看第一个请求,发现第一个请求的出的数据是ob混淆的代码

3.1解析ob混淆代码
可以先在fiddle中hook一下,在页面中就会被debugger断住

查看堆栈,点击进入脚本中

老规矩,搜索document查看cookie位置,得知document[_0x1e8e('0x9')]是结果(可以自己在控制台中输出看看)

查看document[_0x1e8e('0x9')]组成方式,发现arg3是最关键位置

向上查看arg3来,在for嵌套的while中,将这一整段抠出,arg2需要也抠出来,上面一段也需要,抠出来,共三部分


将其优化缺了就补,具体代码在下面
其中mask是'3000176000856006061501533003690027800375'好像acw_sc_v2的js中都有这串数字,

3.2通过js获取到acw_sc__v2
在第一个请求得出的数据是ob混淆的代码中有一条数据是arg1的值

取出arg1,将他作为参数传入到js中

def get_js(arg1):
with open('洛阳大华.js', mode='r') as f:
    js_code = f.read()
compile_result = execjs.compile(js_code)
result = compile_result.call('get_arg', arg1)
return result
headers = {
    "user-agent": "***"
}
url = "aHR0cHM6Ly93d3cubHlkaC5jb20vaml0dWFuLw=="
response = requests.get(url, headers=headers)
arg1 = re.search(r"var arg1='(.*)';", response.text).group(1)
acw_sc__v2 = get_js(arg1)
print(acw_sc__v2)

4.js代码

function get_arg(arg1){
 var posList = [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 mask = '3000176000856006061501533003690027800375';
var outPutList = [];
var arg2 = '';
var arg3 = '';
for (var i = 0x0; i < arg1['length']; i++) {
    var this_i = arg1[i];
    for (var j = 0x0; j < posList['length']; j++) {
        if (posList[j] == i + 0x1) {
            outPutList[j] = this_i;
        }
    }
}
arg2 = outPutList['join']('');
for (var i = 0x0; i < arg2['length'] && i < mask['length']; i += 0x2) {
    var GxjQsM = '1|4|3|0|2'['split']('|')
      , QoWazb = 0x0;
    while (!![]) {
        switch (GxjQsM[QoWazb++]) {
        case '0':
            if (xorChar['length'] == 0x1) {
                xorChar = '0' + xorChar;
            }
            continue;
        case '1':
            var strChar = parseInt(arg2['slice'](i, i + 0x2), 0x10);
            continue;
        case '2':
            arg3 += xorChar;
            continue;
        case '3':
            var xorChar = (strChar ^ maskChar)['toString'](0x10);
            continue;
        case '4':
            var maskChar = parseInt(mask['slice'](i, i + 0x2), 0x10);
            continue;
        }
        break;
    }
}
return arg3
}
var arg1 = '4E0EB0FBC047D55251580E09CEDDE09B73531272';
console.log(get_arg(arg1))

参考链接

https://www.cnblogs.com/zichliang/p/16635617.html

posted @ 2024-03-06 17:03  导弹*  阅读(1885)  评论(0)    收藏  举报