Timelessyu 发表于 2021-10-25 14:52

某图获取图片链接--JS逆向

本帖最后由 18113529297 于 2021-10-25 15:44 编辑

目标:aHR0cHM6Ly9tbXp6dHQuY29tLw==
遇到debugger:


对于这个站点有两种方法:
[*]在dubugger处打个短点, 右键编辑改为false
[*]注入js:
[*]var _con = Function.prototype.constructor;
Function.prototype.constructor = function(val){
if(val = "debugger"){
    return 0;
}
return _con(val);
}
这样debugger就没有了


接着对获取图片的url进行分析

分析过程:
[*]查看之前的请求的url都返回值,有没有
[*]查看网页源代码发现

发现都没有这相关的内容那就可能是js生成的了, 直接跟栈:


点进去, 下个短断, 然后在点击下一张图, 让网站断在这里



然后跟栈, 找到定位点






头部_0x49be5e就存在我们需要的信息, 继续跟, 找到它生成的位置或者加密方法




最后跟到这里, 查看整个函数体, 一个平坦流, 然后在每个_0x106295所在都case下断



然后跟值:
第一个断点: 大致看出这个创建了这个对象, 然后又对一系列赋值


第二个断点: 就是创建用于存放图片的数组




第三个断点:




这里就进行赋值操作了, 把整个代码都翻译成我们看得懂的



这样大致就看得懂了, forEach, 整个代码块就是把_0x34dc1d里的内容遍历赋值给images数组, _0x34dc1d就是我们需要找到内容了, 直接看它赋值处

发现在第一个断点这里, 把它翻译一下就是这个样子_0x51a6be["auFiA"](decrypt, _0x2a3ba0)["split"](',')
//decrypt是一个函数


然后寻找函数所在位置_0x51a6be["auFiA"]:点击跳转到函数位置

看到这里, 基本上就能构造出来它的整个流程了:


总的来说就是decrypt(_0x2a3ba0);继续查找decrypt函数位置




看不懂, 没关系, 把它的翻译成我们看得懂的

function decrypt(_0x486268) {
    var _0x4e1e01 = _0x5765
      , _0x2d0d51 = {};
_0x2d0d51["WvNOs"] = "0809020607" + "070303",
_0x2d0d51["XfCDz"] = function(_0x53680c, _0x56563e) {
      return _0x53680c % _0x56563e;
    },
_0x2d0d51["sppdK"] = "oeir",
_0x2d0d51["pTmCH"] = function(_0x5c2378, _0x5788d3) {
      return _0x5c2378 + _0x5788d3;
    };
    ;
var _0x559c2e = _0x2d0d51,
_0x94c48 = _0x559c2e["WvNOs"],
_0x202045 = _0x559c2e["XfCDz"](id, -0xa * 0x3ac + 0x1 * 0x1fe9 + 0x4d1) ? "oeir" :"dafx";
return HexStr = CryptoJS["enc"]["Hex"]["parse"](_0x486268),
Base64Str = CryptoJS["enc"]["Base64"]["stringify"](HexStr),
key = CryptoJS["MD5"](CryptoJS["enc"]["Utf8"]["parse"](_0x559c2e["pTmCH"](id, _0x202045)))["toString"]()["substr"](0xfff + 0xf2 + -0x6f * 0x27, -0x1 * 0x255f + 0x1f44 + 0x62b),
key = CryptoJS["enc"]["Utf8"]["parse"](key),
decrypt = CryptoJS["AES"]['decrypt'](Base64Str, key, {
      'iv': CryptoJS["enc"]["Utf8"]["parse"](_0x94c48),
      'mode': CryptoJS["mode"]["CBC"],
      'padding': CryptoJS["pad"]["Pkcs7"]
    }),
decrypt["toString"](CryptoJS["enc"]["Utf8"]);
}
这个就很明显了, 直接扣代码进行调试传入缺少参数:
[*]由于我们前面已经吧一些固定值写好, _0x4e1e01就不需要了
[*]id就是url后的id数字

使用nodejs运行



接下来就最后的传入参数的值了参数值由它生产




看到这个参数:



这种就有点像html对应的html都结果树了,而且里面的data,不就是我们最后传入参数值嘛, 直接去看看网页源代码


果不其然。换个页面再试一下。




成功!





Kaiter_Plus 发表于 2021-10-25 15:14

好帖,学习了!

我今天是大佬 发表于 2021-10-25 15:40

学习学习, 可还行

aliya0416 发表于 2021-10-25 16:01

谢谢分享,学到了,感谢

3404071 发表于 2021-10-25 16:16

请问这是什么编辑器

uav 发表于 2021-10-25 20:01

学习一下,要是有视频就更好了

Timelessyu 发表于 2021-10-25 20:51

3404071 发表于 2021-10-25 16:16
请问这是什么编辑器

vscode

涛之雨 发表于 2021-10-25 22:12

403了。。。
此外那个构造debugger的骚操作学到了ohhhhhhhhhhhhhhhhhh

afti 发表于 2021-10-25 22:43

学习获取图片真实地址!

想不出名字 发表于 2021-10-26 07:47

MK,学习一下
页: [1] 2 3 4
查看完整版本: 某图获取图片链接--JS逆向