@@ -90,8 +90,8 @@ def _orderByTest(cols):
9090 kb .errorIsNone = False
9191 lowerCount , upperCount = conf .uColsStart , conf .uColsStop
9292
93- if lowerCount == 1 or conf .uCols :
94- found = kb . orderByColumns or ( _orderByTechnique (lowerCount , upperCount ) if conf .uCols else _orderByTechnique () )
93+ if kb . orderByColumns is None and ( lowerCount == 1 or conf .uCols ): # ORDER BY is not bullet-proof
94+ found = _orderByTechnique (lowerCount , upperCount ) if conf .uCols else _orderByTechnique ()
9595 if found :
9696 kb .orderByColumns = found
9797 infoMsg = "target URL appears to have %d column%s in query" % (found , 's' if found > 1 else "" )
@@ -267,6 +267,8 @@ def _unionTestByCharBruteforce(comment, place, parameter, value, prefix, suffix)
267267
268268 validPayload = None
269269 vector = None
270+ orderBy = kb .orderByColumns
271+ uChars = (conf .uChar , kb .uChar )
270272
271273 # In case that user explicitly stated number of columns affected
272274 if conf .uColsStop == conf .uColsStart :
@@ -301,6 +303,10 @@ def _unionTestByCharBruteforce(comment, place, parameter, value, prefix, suffix)
301303 if not all ((validPayload , vector )) and not warnMsg .endswith ("consider " ):
302304 singleTimeWarnMessage (warnMsg )
303305
306+ if count and orderBy is None and kb .orderByColumns is not None : # discard ORDER BY results (not usable - e.g. maybe invalid altogether)
307+ conf .uChar , kb .uChar = uChars
308+ validPayload , vector = _unionTestByCharBruteforce (comment , place , parameter , value , prefix , suffix )
309+
304310 return validPayload , vector
305311
306312def unionTest (comment , place , parameter , value , prefix , suffix ):
0 commit comments