Json.NET 反序列化漏洞复现问题解答

0x01 问题解答

dotnet安全矩阵群里的某位师傅在复现Json.Net反序列化漏洞时抛出异常,师傅使用的是ysoserial.exe -g ObjectDataProvider -f json.net -c calc生成的payload,应用的版本是9.0.1,.NET Framework 4.5.2,异常如下图.

Json.NET 反序列化漏洞复现问题解答

原因在于设定了序列化后返回的泛型类型为TestClass,而TestClass类成员变量等结构和poc里提供的反序列化用到的ObjectDataProvider类结构不一致引起的。感谢群里@月亮师傅积极的互动,提供的两个解决方法

1. 将 JsonConvert.DeserializeObject<TestClass> 改成 DeserializeObject<ObjectDataProvider> 或者改成 JsonConvert.DeserializeObject<Object>2.  JsonConvert.DeserializeObject(poc)