3939from lib .core .option import _setDBMS
4040from lib .core .option import _setKnowledgeBaseAttributes
4141from lib .core .option import _setAuthCred
42+ from lib .core .settings import ASTERISK_MARKER
4243from lib .core .settings import CUSTOM_INJECTION_MARK_CHAR
4344from lib .core .settings import HOST_ALIASES
4445from lib .core .settings import JSON_RECOGNITION_REGEX
@@ -85,16 +86,14 @@ def _setRequestParams():
8586 if conf .data is not None :
8687 conf .method = HTTPMETHOD .POST
8788
88- if CUSTOM_INJECTION_MARK_CHAR in conf .data : # later processed
89- pass
90-
91- elif re .search (JSON_RECOGNITION_REGEX , conf .data ):
89+ if re .search (JSON_RECOGNITION_REGEX , conf .data ):
9290 message = "JSON like data found in POST data. "
9391 message += "Do you want to process it? [Y/n/q] "
9492 test = readInput (message , default = "Y" )
9593 if test and test [0 ] in ("q" , "Q" ):
9694 raise SqlmapUserQuitException
9795 elif test [0 ] not in ("n" , "N" ):
96+ conf .data = conf .data .replace (CUSTOM_INJECTION_MARK_CHAR , ASTERISK_MARKER )
9897 conf .data = re .sub (r'("[^"]+"\s*:\s*"[^"]+)"' , r'\g<1>%s"' % CUSTOM_INJECTION_MARK_CHAR , conf .data )
9998 conf .data = re .sub (r'("[^"]+"\s*:\s*)(-?\d[\d\.]*\b)' , r'\g<0>%s' % CUSTOM_INJECTION_MARK_CHAR , conf .data )
10099 kb .postHint = POST_HINT .JSON
@@ -106,6 +105,7 @@ def _setRequestParams():
106105 if test and test [0 ] in ("q" , "Q" ):
107106 raise SqlmapUserQuitException
108107 elif test [0 ] not in ("n" , "N" ):
108+ conf .data = conf .data .replace (CUSTOM_INJECTION_MARK_CHAR , ASTERISK_MARKER )
109109 conf .data = re .sub (r"(<([^>]+)( [^<]*)?>)([^<]+)(</\2)" , r"\g<1>\g<4>%s\g<5>" % CUSTOM_INJECTION_MARK_CHAR , conf .data )
110110 kb .postHint = POST_HINT .SOAP if "soap" in conf .data .lower () else POST_HINT .XML
111111
@@ -116,9 +116,13 @@ def _setRequestParams():
116116 if test and test [0 ] in ("q" , "Q" ):
117117 raise SqlmapUserQuitException
118118 elif test [0 ] not in ("n" , "N" ):
119+ conf .data = conf .data .replace (CUSTOM_INJECTION_MARK_CHAR , ASTERISK_MARKER )
119120 conf .data = re .sub (r"(?si)(Content-Disposition.+?)((\r)?\n--)" , r"\g<1>%s\g<2>" % CUSTOM_INJECTION_MARK_CHAR , conf .data )
120121 kb .postHint = POST_HINT .MULTIPART
121122
123+ elif CUSTOM_INJECTION_MARK_CHAR in conf .data : # later processed
124+ pass
125+
122126 else :
123127 place = PLACE .POST
124128
@@ -149,7 +153,7 @@ def _setRequestParams():
149153 raise SqlmapUserQuitException
150154
151155 for place , value in ((PLACE .URI , conf .url ), (PLACE .CUSTOM_POST , conf .data ), (PLACE .CUSTOM_HEADER , str (conf .httpHeaders ))):
152- _ = re .sub (r"\bq=[^;']+" , "" , value or "" )
156+ _ = re .sub (r"\bq=[^;']+" , "" , value or "" ) if place == PLACE . CUSTOM_HEADER else value or ""
153157 if CUSTOM_INJECTION_MARK_CHAR in _ :
154158 if kb .processUserMarks is None :
155159 lut = {PLACE .URI : '-u' , PLACE .CUSTOM_POST : '--data' , PLACE .CUSTOM_HEADER : '--headers/--user-agent/--referer/--cookie' }
0 commit comments