@@ -110,6 +110,7 @@ def payload(self, place=None, parameter=None, value=None, newValue=None, where=N
110110 paramDict = conf .paramDict [place ]
111111 origValue = getUnicode (paramDict [parameter ])
112112 newValue = getUnicode (newValue ) if newValue else newValue
113+ base64Encoding = re .sub (r" \(.+" , "" , parameter ) in conf .base64Parameter
113114
114115 if place == PLACE .URI or BOUNDED_INJECTION_MARKER in origValue :
115116 paramString = origValue
@@ -173,7 +174,10 @@ def payload(self, place=None, parameter=None, value=None, newValue=None, where=N
173174
174175 newValue = self .cleanupPayload (newValue , origValue )
175176
176- if re .sub (r" \(.+" , "" , parameter ) in conf .base64Parameter :
177+ if base64Encoding :
178+ _newValue = newValue
179+ _origValue = origValue
180+
177181 # TODO: support for POST_HINT
178182 newValue = encodeBase64 (newValue , binary = False , encoding = conf .encoding or UNICODE_ENCODING )
179183 origValue = encodeBase64 (origValue , binary = False , encoding = conf .encoding or UNICODE_ENCODING )
@@ -194,7 +198,13 @@ def payload(self, place=None, parameter=None, value=None, newValue=None, where=N
194198
195199 retVal = retVal .replace (kb .customInjectionMark , "" ).replace (REPLACEMENT_MARKER , kb .customInjectionMark )
196200 elif BOUNDED_INJECTION_MARKER in paramDict [parameter ]:
197- retVal = paramString .replace ("%s%s" % (origValue , BOUNDED_INJECTION_MARKER ), self .addPayloadDelimiters (newValue ))
201+ if base64Encoding :
202+ retVal = paramString .replace ("%s%s" % (_origValue , BOUNDED_INJECTION_MARKER ), _newValue )
203+ match = re .search (r"(%s)=([^&]*)" % re .sub (r" \(.+" , "" , parameter ), retVal )
204+ if match :
205+ retVal = retVal .replace (match .group (0 ), "%s=%s" % (match .group (1 ), encodeBase64 (match .group (2 ), binary = False , encoding = conf .encoding or UNICODE_ENCODING )))
206+ else :
207+ retVal = paramString .replace ("%s%s" % (origValue , BOUNDED_INJECTION_MARKER ), self .addPayloadDelimiters (newValue ))
198208 elif place in (PLACE .USER_AGENT , PLACE .REFERER , PLACE .HOST ):
199209 retVal = paramString .replace (origValue , self .addPayloadDelimiters (newValue ))
200210 else :
0 commit comments