mirror of
				https://github.com/sqlmapproject/sqlmap.git
				synced 2025-11-04 18:07:46 +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