过过往往 2022-03-01 21:42
浏览 25
已结题

一道寻找js漏洞的难题,给个解答方向也好

问题:cryptoAPI.js 是一段JavaScript源代码,它(部分)实现了加密API。它包含三个单独的漏洞,允许攻击者在稍后cryptoAPI. sha1.hash(x)调用函数时针对某些参数执行任意代码x。

代码:

    var CryptoAPI = (function() {
        var encoding = {
            a2b: function(a) {return a},
            b2a: function(b) {return b}
        };

        var API = {
            sha1: {
                name: 'sha1',
                identifier: '2b0e03021a',
                size: 20,
                block: 64,
                hash: function(s) {
                    console.log(s)
                    var len = (s += '\x80').length,
                        blocks = len >> 6,
                        chunk = len & 63,
                        res = "",
                        i = 0,
                        j = 0,
                        H = [0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0],
                        w = [];

                    while (chunk++ != 56) {
                        s += "\x00";
                        if (chunk == 64) {
                            blocks++;
                            chunk = 0;
                        }
                    }

                    for (s += "\x00\x00\x00\x00", chunk = 3, len = 8 * (len - 1); chunk >= 0; chunk--) {
                        s += encoding.b2a(len >> (8 * chunk) & 255);
                    }

                    for (i = 0; i < s.length; i++) {
                        j = (j << 8) + encoding.a2b(s[i]);
                        if ((i & 3) == 3) {
                            w[(i >> 2) & 15] = j;
                            j = 0;
                        }
                        if ((i & 63) == 63) CryptoAPI.sha1._round(H, w);
                    }

                    for (i = 0; i < H.length; i++)
                        for (j = 3; j >= 0; j--)
                            res += encoding.b2a(H[i] >> (8 * j) & 255);
                    return res;
                }, // End "hash"
                _round: function(H, w) {return H*w}
            } // End "sha1"
        }; // End "API"

        return API; // End body of anonymous function
    })(); // End "CryptoAPI"

网络安全方面的题目
希望大家能帮忙找找它包含三个单独的漏洞行数,我搞了半天实在一个也找不出来,谢谢=

  • 写回答

1条回答 默认 最新

  • 有问必答小助手 2022-03-03 17:18
    关注

    你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答


    本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。


    因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。

    评论

报告相同问题?

问题事件

  • 系统已结题 3月9日
  • 修改了问题 3月1日
  • 创建了问题 3月1日

悬赏问题

  • ¥15 本地测试网站127.0.0.1 已拒绝连接,如何解决?(标签-ubuntu)
  • ¥50 Qt在release捕获异常并跟踪堆栈(有Demo,跑一下环境再回答)
  • ¥30 python,LLM 文本提炼
  • ¥15 关于将inet引入的相关问题
  • ¥15 关于一个倒计时的操作和显示设计
  • ¥15 提问STK的问题,哪位航天领域的同学会啊
  • ¥15 苹果系统的mac m1芯片的笔记本使用ce修改器使用不了
  • ¥15 单相逆变的电压电流双闭环中进行低通滤波PID算法改进
  • ¥15 关于#java#的问题,请各位专家解答!
  • ¥15 如何卸载arcgis 10.1 data reviewer for desktop