mirror of
https://github.com/elicpeter/nyx.git
synced 2026-06-09 19:45:13 +02:00
Dynamic (#77)
This commit is contained in:
parent
55247b7fcd
commit
991c84a1eb
1464 changed files with 225448 additions and 1985 deletions
23
tests/dynamic_fixtures/json_parse_depth/python/vuln.py
Normal file
23
tests/dynamic_fixtures/json_parse_depth/python/vuln.py
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
# Python JSON_PARSE depth-bomb vuln fixture.
|
||||
#
|
||||
# Models a config-driven JSON ingest endpoint that picks the parser
|
||||
# input based on the request payload tag - `*_DEEP` routes through a
|
||||
# deeply-nested array literal (256 levels) that drives `json.loads`
|
||||
# past the 64-level depth budget; `*_SHALLOW` routes through a flat
|
||||
# `[]` parse that leaves the predicate clear. This shape is needed by
|
||||
# the differential runner: the vuln-payload attempt and the
|
||||
# benign-control attempt both load the same fixture, and only the
|
||||
# payload-routed deep branch trips the `JsonParseExcessiveDepth`
|
||||
# predicate.
|
||||
import json
|
||||
|
||||
|
||||
def run(value):
|
||||
if isinstance(value, (bytes, bytearray)):
|
||||
value = value.decode("utf-8", "replace")
|
||||
elif not isinstance(value, str):
|
||||
value = str(value)
|
||||
if "DEEP" in value:
|
||||
nested = "[" * 256 + "]" * 256
|
||||
return json.loads(nested)
|
||||
return json.loads("[]")
|
||||
Loading…
Add table
Add a link
Reference in a new issue