mirror of
https://github.com/sqlmapproject/sqlmap.git
synced 2025-07-27 08:30:10 +03:00
Adds support for [] and null in JSON values.
This commit is contained in:
parent
881d767df8
commit
8c4516efa7
|
@ -676,7 +676,13 @@ def paramToDict(place, parameters=None):
|
||||||
for key in current.keys():
|
for key in current.keys():
|
||||||
value = current[key]
|
value = current[key]
|
||||||
if isinstance(value, (list, tuple, set, dict)):
|
if isinstance(value, (list, tuple, set, dict)):
|
||||||
if value:
|
original = current[key]
|
||||||
|
if str(value) == "['']":
|
||||||
|
current[key] = "['%s']" % BOUNDED_INJECTION_MARKER
|
||||||
|
candidates["%s (%s)" % (parameter, key)] = re.sub(r"\b(%s\s*=\s*)%s" % (re.escape(parameter), re.escape(testableParameters[parameter])), r"\g<1>%s" % json.dumps(deserialized, separators=(',', ':') if ", " not in testableParameters[parameter] else None), parameters)
|
||||||
|
current[key] = original
|
||||||
|
walk(head, value)
|
||||||
|
elif value:
|
||||||
walk(head, value)
|
walk(head, value)
|
||||||
elif isinstance(value, (bool, int, float, six.string_types)):
|
elif isinstance(value, (bool, int, float, six.string_types)):
|
||||||
original = current[key]
|
original = current[key]
|
||||||
|
@ -687,7 +693,12 @@ def paramToDict(place, parameters=None):
|
||||||
candidates["%s (%s)" % (parameter, key)] = re.sub(r"\b(%s\s*=\s*)%s" % (re.escape(parameter), re.escape(testableParameters[parameter])), r"\g<1>%s" % json.dumps(deserialized, separators=(',', ':') if ", " not in testableParameters[parameter] else None), parameters)
|
candidates["%s (%s)" % (parameter, key)] = re.sub(r"\b(%s\s*=\s*)%s" % (re.escape(parameter), re.escape(testableParameters[parameter])), r"\g<1>%s" % json.dumps(deserialized, separators=(',', ':') if ", " not in testableParameters[parameter] else None), parameters)
|
||||||
current[key] = original
|
current[key] = original
|
||||||
|
|
||||||
deserialized = json.loads(testableParameters[parameter])
|
# Changes null to "null" in JSON value,
|
||||||
|
# Otherwise it is None in Python.
|
||||||
|
null_fixed = re.sub(r'null', '"null"', str(testableParameters[parameter]))
|
||||||
|
# Changes [] to [""] in JSON value.
|
||||||
|
brackets_fixed = re.sub(r'\[\]', '[""]', str(null_fixed))
|
||||||
|
deserialized = json.loads(brackets_fixed)
|
||||||
walk(deserialized)
|
walk(deserialized)
|
||||||
|
|
||||||
if candidates:
|
if candidates:
|
||||||
|
|
Loading…
Reference in New Issue
Block a user