欢迎光临
我们一直在努力

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

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

目标:aHR0cHM6Ly9tbXp6dHQuY29tLw==
遇到debugger:

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

对于这个站点有两种方法:

  • 在dubugger处打个短点, 右键编辑改为false
  • 注入js:
  • [JavaScript] 纯文本查看 复制代码
    var _con = Function.prototype.constructor;Function.prototype.constructor = function(val){  if(val = "debugger"){    return 0;  }  return _con(val);} 

这样debugger就没有了

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

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

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



分析过程:

  • 查看之前的请求的url都返回值,有没有
  • 查看网页源代码发现

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

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

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

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





然后跟栈, 找到定位点

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



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



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

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





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

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

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

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

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



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

第三个断点:

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



  

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

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

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

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

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



发现在第一个断点这里, 把它翻译一下就是这个样子

[JavaScript] 纯文本查看 复制代码
_0x51a6be["auFiA"](decrypt, _0x2a3ba0)["split"](',')//decrypt是一个函数

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

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



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

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

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



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

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

[JavaScript] 纯文本查看 复制代码
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运行

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

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

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

看到这个参数:

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

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

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

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

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

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

成功!

赞(0) 打赏
未经允许不得转载:哈哈网 » 某图获取图片链接--JS逆向

相关推荐

  • 暂无文章

评论 抢沙发

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续提供更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏