### 如何判断靶标是否使用 FastJSON

1. 报错信息

通过构造特殊的请求来触发应用程序的报错，并从报错信息中寻找线索

- 构造畸形 JSON 数据: 向目标API发送一个格式错误的JSON（例如，`{"a": 1, "b": "2",}`，多一个逗号）。如果服务器返回的错误信息中包含 `com.alibaba.fastjson`、`fastjson.JSONException` 或其他与 Fastjson 相关的关键字，那么就可以确定目标使用了 Fastjson

- 尝试特定语法: Fastjson 在处理一些特殊类型时有其独特的语法。你可以尝试发送一个包含 `@type` 字段的 JSON，例如 `{"@type":"java.lang.Class","val":"com.alibaba.fastjson.JSON"}`。如果服务器返回了与这个字段相关的解析错误，那么目标可能使用了 Fastjson

2. 数值型数据

FastJSON 会把 01 解析成 1

FastJSON 1.2.70 会把 NaN 解析成 0

Fastjson 1.2.37 会抛出异常

3. 注释符

FastJSON 支持注释符

4. 单引号

FastJSON 的 `Feature.AllowSingleQuote` 是默认开启的，支持使用单引号包裹字段名

5. 缺失值

FastJSON 正常解析，会把缺失的值忽略掉

6. 大小写

FastJSON 在反序列化的时候，是对大小写不敏感的

7. 特殊符号

FastJSON 1.2.36 版本及后续版本支持同时使用 `_` 和 `-` 对字段名进行处理