mirror of
https://github.com/sqlmapproject/sqlmap.git
synced 2025-02-02 20:54:13 +03:00
some updates
This commit is contained in:
parent
8b0a132fa9
commit
43892cddbb
|
@ -96,6 +96,28 @@ def checkSqlInjection(place, parameter, value, parenthesis):
|
||||||
|
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
def heuristicCheckSqlInjection(place, parameter, value):
|
||||||
|
prefix = ""
|
||||||
|
postfix = ""
|
||||||
|
|
||||||
|
if conf.prefix or conf.postfix:
|
||||||
|
if conf.prefix:
|
||||||
|
prefix = conf.prefix
|
||||||
|
|
||||||
|
if conf.postfix:
|
||||||
|
postfix = conf.postfix
|
||||||
|
|
||||||
|
payload = "%s%s%s" % (prefix, randomStr(length=10, alphabet=['"', '\'', ')', '(']), postfix)
|
||||||
|
Request.queryPage(payload, place)
|
||||||
|
result = kb.lastErrorPage and kb.lastErrorPage[0]==kb.lastRequestUID
|
||||||
|
infoMsg = "heuristics show that %s parameter '%s' is " % (place, parameter)
|
||||||
|
if result:
|
||||||
|
infoMsg += "injectable"
|
||||||
|
logger.info(infoMsg)
|
||||||
|
else:
|
||||||
|
infoMsg += "not injectable"
|
||||||
|
logger.warning(infoMsg)
|
||||||
|
|
||||||
def checkDynParam(place, parameter, value):
|
def checkDynParam(place, parameter, value):
|
||||||
"""
|
"""
|
||||||
This function checks if the url parameter is dynamic. If it is
|
This function checks if the url parameter is dynamic. If it is
|
||||||
|
|
|
@ -24,6 +24,7 @@ Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
|
||||||
from lib.controller.action import action
|
from lib.controller.action import action
|
||||||
from lib.controller.checks import checkSqlInjection
|
from lib.controller.checks import checkSqlInjection
|
||||||
|
from lib.controller.checks import heuristicCheckSqlInjection
|
||||||
from lib.controller.checks import checkDynParam
|
from lib.controller.checks import checkDynParam
|
||||||
from lib.controller.checks import checkStability
|
from lib.controller.checks import checkStability
|
||||||
from lib.controller.checks import checkString
|
from lib.controller.checks import checkString
|
||||||
|
@ -232,6 +233,7 @@ def start():
|
||||||
kb.testedParams.add(paramKey)
|
kb.testedParams.add(paramKey)
|
||||||
|
|
||||||
if testSqlInj:
|
if testSqlInj:
|
||||||
|
heuristicCheckSqlInjection(place, parameter, value)
|
||||||
for parenthesis in range(0, 4):
|
for parenthesis in range(0, 4):
|
||||||
logMsg = "testing sql injection on %s " % place
|
logMsg = "testing sql injection on %s " % place
|
||||||
logMsg += "parameter '%s' with " % parameter
|
logMsg += "parameter '%s' with " % parameter
|
||||||
|
|
|
@ -551,7 +551,7 @@ def randomInt(length=4):
|
||||||
|
|
||||||
return int("".join([random.choice(string.digits) for _ in xrange(0, length)]))
|
return int("".join([random.choice(string.digits) for _ in xrange(0, length)]))
|
||||||
|
|
||||||
def randomStr(length=4, lowercase=False):
|
def randomStr(length=4, lowercase=False, alphabet=None):
|
||||||
"""
|
"""
|
||||||
@param length: length of the random string.
|
@param length: length of the random string.
|
||||||
@type length: C{int}
|
@type length: C{int}
|
||||||
|
@ -560,7 +560,9 @@ def randomStr(length=4, lowercase=False):
|
||||||
@rtype: C{str}
|
@rtype: C{str}
|
||||||
"""
|
"""
|
||||||
|
|
||||||
if lowercase:
|
if alphabet:
|
||||||
|
rndStr = "".join([random.choice(alphabet) for _ in xrange(0, length)])
|
||||||
|
elif lowercase:
|
||||||
rndStr = "".join([random.choice(string.lowercase) for _ in xrange(0, length)])
|
rndStr = "".join([random.choice(string.lowercase) for _ in xrange(0, length)])
|
||||||
else:
|
else:
|
||||||
rndStr = "".join([random.choice(string.letters) for _ in xrange(0, length)])
|
rndStr = "".join([random.choice(string.letters) for _ in xrange(0, length)])
|
||||||
|
|
|
@ -1024,7 +1024,7 @@ def __setKnowledgeBaseAttributes():
|
||||||
|
|
||||||
kb.parenthesis = None
|
kb.parenthesis = None
|
||||||
kb.partRun = None
|
kb.partRun = None
|
||||||
kb.requestUID = 0
|
kb.lastRequestUID = 0
|
||||||
kb.queryCounter = 0
|
kb.queryCounter = 0
|
||||||
kb.resumedQueries = {}
|
kb.resumedQueries = {}
|
||||||
kb.stackedTest = None
|
kb.stackedTest = None
|
||||||
|
|
|
@ -57,7 +57,7 @@ class htmlHandler(ContentHandler):
|
||||||
if self.__match:
|
if self.__match:
|
||||||
self.dbms = self.__dbms
|
self.dbms = self.__dbms
|
||||||
self.__match = None
|
self.__match = None
|
||||||
kb.lastErrorPage = (kb.requestUID, self.__page)
|
kb.lastErrorPage = (kb.lastRequestUID, self.__page)
|
||||||
|
|
||||||
def htmlParser(page):
|
def htmlParser(page):
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -90,7 +90,7 @@ class Connect:
|
||||||
requestHeaders = ""
|
requestHeaders = ""
|
||||||
responseHeaders = ""
|
responseHeaders = ""
|
||||||
|
|
||||||
kb.requestUID += 1
|
kb.lastRequestUID += 1
|
||||||
|
|
||||||
try:
|
try:
|
||||||
if silent:
|
if silent:
|
||||||
|
|
Loading…
Reference in New Issue
Block a user