某EHR注入漏洞分析
2023-6-7 00:17:18 Author: 白色安全(查看原文) 阅读量:27 收藏

01

接口servlet/codesettree

出现拼接的地方

可以看到判断var1 =c的时候,进入该代码块

其中的var5是可控的,最后追加并且查询,但是前面是有加密的

02

加密解密

定位fromflag,找到decode和encode两个函数进行加密和解密

public static final String decode(String s) {
    if (s == null) {
        return "";
    } else {
        String decodedString = "";

        for (int i = 0; i < s.length(); ++i) {
            char c;
            switch (c = s.charAt(i)) {
                case '^':
                    String s2 = s.substring(i + 1, i + 4 + 1);
                    decodedString = decodedString + (char) Integer.parseInt(s2, 16);
                    i += 4;
                    break;
                case '~':
                    String s1 = s.substring(i + 1, i + 4 - 1);
                    decodedString = decodedString + (char) Integer.parseInt(s1, 16);
                    i += 2;
                    break;
                default:
                    decodedString = decodedString + c;
            }
        }
        return decodedString;
    }
}

测试查询数据库名为yyys

END


文章来源: http://mp.weixin.qq.com/s?__biz=MzkwMzMxMTcyNw==&mid=2247510809&idx=1&sn=ca6461f546559a6f29c4941a5b82d48b&chksm=c09ad319f7ed5a0f1734d7a2ad5d952735c21a111db50b76358fc29d7441210d4087cbb5cb69#rd
如有侵权请联系:admin#unsafe.sh