这些是我研究文章《探索 JSON 互操作性漏洞》的配套实验室。
默认情况下,这些实验室绑定到主机的 5000-5004 端口。
重复键优先级不一致
{"qty": 1, "qty": -1}
字符截断
对于后键优先的解析器,会发生截断(对于前键优先的解析器,则需翻转顺序)
{"qty": 1, "qty\<raw \x0d byte here>": -1}
{"qty": 1, "qty\ud800": -1} # Any unpaired surrogate U+D800-U+DFFF
{"qty": 1, "qty"": -1}
{"qty": 1, "qt\y": -1}
注释截断
这些文档利用了各解析器对注释和无引号字符串支持不一致的特性:
{"qty": 1, "extra": 1/*, "qty": -1, "extra2": 2*/}
{"qty": 1, "extra": a/*, "qty": -1, "extra2": b*/}
{"qty": 1, "extra": "a/*", "qty": -1, "extra2": "b"*/}
{"qty": 1, "extra": "a"//, "qty": -1}
大数解码不一致
这些大数值可能会被转换为字符串(例如,“+Infinity”),从而可能导致类型混淆漏洞。或者,它们可能被转换为 MAX_INT/MIN_INT、四舍五入的值或 0,从而可能绕过业务逻辑。
{"qty": 999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999}
{"qty": -999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999}
{"qty": 1.0e4096}
{"qty": -1.0e4096}
Twitter: @theBumbleSec
GitHub: the-bumble