如何判断靶标是否使用 FastJSON

1. 报错信息

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

  • 构造畸形 JSON 数据: 向目标API发送一个格式错误的JSON(例如,{"a": 1, "b": "2",},多一个逗号)。如果服务器返回的错误信息中包含 com.alibaba.fastjsonfastjson.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 版本及后续版本支持同时使用 _- 对字段名进行处理

Copyright © 版权信息 all right reserved,powered by Gitbook该文件修订时间: 2025-09-25 03:13:21

results matching ""

    No results matching ""