记一次SRC中通过小程序逆向解密获得中高危

6050d606a70a3fcd41849d4c5b9b2f75.gif
8c2d57060323d93531ad30df03fb6049.png

免责声明

请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用。

在挖掘src的过程中 ,现在很多都偏向挖掘小程序的漏洞了,这里记一次小程序解密加密然后挖掘漏洞
329f9e11523771a62281bc58f45fbd3d.png
打开一个小程序发现全部都是使用的这种看不懂的加密 ,看着像是base64 的加密 ,但是解密肯定不是 。
我们尝试反编译小程序,看看能否找到点可用的东西,
a84afa33fdfdcee71c8712807a43029a.png
反编译之后的东西就是上面这样 , 大家如果眼睛心细的话可以看出存在一个 crypto

4f99c65d32605f2997edc18e1954767a.png
crypto 一眼就能看见是加密的意思了 打开看看能不能解密
b27222b220b220ecbb224e6097a3c2b7.png
贴一个 大家可以自行尝试解密

("undefined" != typeof Crypto && Crypto.util) ||
  (function () {
    var t = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",
      n =
      "undefined" == typeof window
      ? (exports.Crypto = {})
      : (window.Crypto = {}),
      r = (n.util = {
        rotl: function (t, n) {
          return (t << n) | (t >>> (32 - n));
        },
        rotr: function (t, n) {
          return (t << (32 - n)) | (t >>> n);
        },
        endian: function (t) {
          if (t.constructor == Number)
            return (16711935 & r.rotl(t, 8)) | (4278255360 & r.rotl(t, 24));
          for (var n = 0; n < t.length; n++) t[n] = r.endian(t[n]);
          return t;
        },
        randomBytes: function (t) {
          for (var n = []; t > 0; t--) n.push(Math.floor(256 * Math.random()));
          return n;
        },
        bytesToWords: function (t) {
          for (var n = [], r = 0, o = 0; r < t.length; r++, o += 8)
            n[o >>> 5] |= (255 & t[r]) << (24 - (o % 32));
          return n;
        },
        wordsToBytes: function (t) {
          for (var n = [], r = 0; r < 32 * t.length; r += 8)
            n.push((t[r >>> 5] >>> (24 - (r % 32))) & 255);
          return n;
        },
        bytesToHex: function (t) {
          for (var n = [], r = 0; r < t.length; r++)
            n.push((t[r] >>> 4).toString(16)), n.push((15 & t[r]).toString(16));
          return n.join("");
        },
        hexToBytes: function (t) {
          for (var n = [], r = 0; r < t.length; r += 2)
            n.push(parseInt(t.substr(r, 2), 16));
          return n;
        },
        bytesToBase64: function (n) {
          if ("function" == typeof btoa) return btoa(e.bytesToString(n));
          for (var r = [], o = 0; o < n.length; o += 3)
            for (
              var u = (n[o] << 16) | (n[o + 1] << 8) | n[o + 2], i = 0;
              i < 4;
              i++
            )
              8 * o + 6 * i <= 8 * n.length
                ? r.push(t.charAt((u >>> (6 * (3 - i))) & 63))
                : r.push("=");
          return r.join("");
        },
        base64ToBytes: function (n) {
          if ("function" == typeof atob) return e.stringToBytes(atob(n));
          n = n.replace(/[^A-Z0-9+\/]/gi, "");
          for (var r = [], o = 0, u = 0; o < n.length; u = ++o % 4)
            0 != u &&
              r.push(
                ((t.indexOf(n.charAt(o - 1)) & (Math.pow(2, -2 * u + 8) - 1)) <<
                 (2 * u)) |
                (t.indexOf(n.charAt(o)) >>> (6 - 2 * u))
              );
          return r;
        },
      }),
      o = (n.charenc = {}),
      e =
      ((o.UTF8 = {
        stringToBytes: function (t) {
          return e.stringToBytes(unescape(encodeURIComponent(t)));
        },
        bytesToString: function (t) {
          return decodeURIComponent(escape(e.bytesToString(t)));
        },
      }),
       (o.Binary = {
         stringToBytes: function (t) {
           for (var n = [], r = 0; r < t.length; r++)
              n.push(255 & t.charCodeAt(r));
            return n;
          },
          bytesToString: function (t) {
            for (var n = [], r = 0; r < t.length; r++)
              n.push(String.fromCharCode(t[r]));
            return n.join("");
          },
        }));
  })();

经过测试发现是一个使用的AES 和BASE64 的加密 方法
通过反编译小程序得到加密方式写出加密 解码脚本 可以对其进行解码
写一个加密解密脚本 对其测试
a8de7d00a0d09a93998702665f5be27a.png
a65001e4bf11a47f46eaffd4aa84d76b.png
是能成功解密的 。然后能成功解密之后就可以开心的挖漏洞了
**xxxx存在越权删除 **
我这里使用A账号的移除功能去移除B账号的母亲这个邀请
抓取A账号的移除功能
2b5f0cd3d606b9ecf2a9d6b9056d36b7.png
发送到重发模块
"LV5Qrnddno45cfc9PEhBkIxoCraStmmL9Aw3f7lxbwDiIpdSkAD+g0hcfveGEbFFn+H86nUT9UJk/bHdTJost7jPXC+BYfRuSQQa526aO+O6U7+wjuYWfr1HP+D/lSlZ"
这是加密的内容 解密之后是这么一串
76ab97ce54317fdec5913ab687bb7a11.png
他的relationId是 2521537
我现在去登录B账号查看B账号的ID
e998ed51ac80f069fe05dea80dc68cc6.png
点击Drop
这是B账号的数据
"LV5Qrnddno45cfc9PEhBkC7Vux/jIqKpATEP+3iz18nlNpBi2jzIV720utuj8rKuLwQ3Q4GEAFyf0GSd5J4bgEEuLTYxQExuRj6bpP4lh5rhvethJMmLBxN1YTW2A62l"
解密后的内容
{"relationId":2521546,"status":5,"sessionId":"eed692a63c6c236d48b2a8cb3ef5bebb"}
他们的relationId是不一样的
我用A账号去移除B账号数据
A账号
{"relationId":2521537,"status":5,"sessionId":"eed692a63c6c236d48b2a8cb3ef5bebb"}
B账号 我替换relationId
{"relationId":2521546,"status":5,"sessionId":"eed692a63c6c236d48b2a8cb3ef5bebb"}
然后进行加密
加密
LV5Qrnddno45cfc9PEhBkC7Vux/jIqKpATEP+3iz18nlNpBi2jzIV720utuj8rKuLwQ3Q4GEAFyf0GSd5J4bgEEuLTYxQExuRj6bpP4lh5rhvethJMmLBxN1YTW2A62l
发送出去
f6544891c65ddf37b62164d9d99e493d.png
刷新登陆 发现数据没了
需要重新添加 这里是可以遍历删除的
对那些已经添加的数据进行删除
f3b6a2e76b75701bb66a465bab988b24.png
成功越权删除了别人的家人联系人
这个小程序存在两个漏洞功能点不一样 ,但是方法都差不多 通过小程序逆向解码加密方式获得一高一中
dda4ace17d38ef9c38d925851a47ce8a.png

b2fb8f6461082822225943cd9be629ee.png
  • 19
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值