Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 93a8828

Browse files
Improved Multipart Form handling (#5598)
* improved multipart marker * Improved file field handling in Multipart forms * improved dumb LF to CRLF converter
1 parent d38d734 commit 93a8828

2 files changed

Lines changed: 5 additions & 1 deletion

File tree

lib/core/target.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -226,7 +226,7 @@ def process(match, repl):
226226
if not (kb.processUserMarks and kb.customInjectionMark in conf.data):
227227
conf.data = getattr(conf.data, UNENCODED_ORIGINAL_VALUE, conf.data)
228228
conf.data = conf.data.replace(kb.customInjectionMark, ASTERISK_MARKER)
229-
conf.data = re.sub(r"(?si)((Content-Disposition[^\n]+?name\s*=\s*[\"']?(?P<name>[^\"'\r\n]+)[\"']?).+?)((%s)+--)" % ("\r\n" if "\r\n" in conf.data else '\n'), functools.partial(process, repl=r"\g<1>%s\g<4>" % kb.customInjectionMark), conf.data)
229+
conf.data = re.sub(r"(?si)((Content-Disposition[^\n]+?name\s*=\s*[\"']?(?P<name>[^\"'\r\n]+)[\"']?).+?)((%s)--)" % ("\r\n" if "\r\n" in conf.data else '\n'), lambda match: match.group(1) + (kb.customInjectionMark if 'filename' not in match.group(0) else '') + match.group(4), conf.data)
230230

231231
if not kb.postHint:
232232
if kb.customInjectionMark in conf.data: # later processed

thirdparty/multipart/multipartpost.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,10 @@ def http_request(self, request):
7474
part = match.group(0)
7575
if b'\r' not in part:
7676
request.data = request.data.replace(part, part.replace(b'\n', b"\r\n"))
77+
for match in re.finditer(b"(Content-Type[^\\n]+[\\n|\\r|\\r\\n]+)",request.data):
78+
part = match.group(0)
79+
if b'\r' not in part:
80+
request.data = request.data.replace(part, part.replace(b'\n', b"\r\n"))
7781

7882
return request
7983

0 commit comments

Comments
 (0)