fastjson获取精确版本

参考:

  • 渗透测试中获取 fastjson 精确版本号的方法

条件是需要业务代码没有处理好异常信息。比如没有捕获异常,或者即便捕获了异常,但是将异常信息作为字符串返回了给客户端。

即便捕获了异常,但是将异常信息作为字符串返回了给客户端

fastjson获取精确版本_第1张图片

对应代码:

    @RequestMapping(value = "/deserialize", method = {RequestMethod.POST })
    @ResponseBody
    public static String Deserialize(@RequestBody String params) {
        try {

            JSONObject ob = JSON.parseObject(params);

            return ob.toString();
        }catch (Exception e){
            e.printStackTrace();
            return e.toString();    // 将异常信息作为HTTP响应的一部分返回了
        }

没有捕获异常,于是异常被抛出返回给客户端

fastjson获取精确版本_第2张图片
对应代码:

    @RequestMapping(value = "/deserializeE2", method = {RequestMethod.POST })
    @ResponseBody
    public static String DeserializeE2(@RequestBody String params) {
        JSONObject ob = JSON.parseObject(params);

        return ob.toString();
        // 并不捕获异常
    }

fastjson抛出的异常被捕获,且不返回异常信息

fastjson获取精确版本_第3张图片

对应代码:

    @RequestMapping(value = "/deserializeE1", method = {RequestMethod.POST })
    @ResponseBody
    public static String DeserializeE1(@RequestBody String params) {
        try {
            JSONObject ob = JSON.parseObject(params);

            return ob.toString();
        }catch (Exception e){
            e.printStackTrace();
            // 并不返回异常信息
        }

        return "";
    }

你可能感兴趣的:(安全,java)