mirror of
https://github.com/sqlmapproject/sqlmap.git
synced 2024-11-25 19:13:48 +03:00
modifying redirection code for only two choices
This commit is contained in:
parent
c03d0e24fb
commit
0fc4288a7c
|
@ -720,7 +720,7 @@ def checkDynamicContent(firstPage, secondPage):
|
||||||
|
|
||||||
if count > conf.retries:
|
if count > conf.retries:
|
||||||
warnMsg = "target url is too dynamic. "
|
warnMsg = "target url is too dynamic. "
|
||||||
warnMsg += "switching to '--text-only' "
|
warnMsg += "Switching to '--text-only' "
|
||||||
logger.warn(warnMsg)
|
logger.warn(warnMsg)
|
||||||
|
|
||||||
conf.textOnly = True
|
conf.textOnly = True
|
||||||
|
@ -744,9 +744,6 @@ def checkStability():
|
||||||
like for instance string matching (--string).
|
like for instance string matching (--string).
|
||||||
"""
|
"""
|
||||||
|
|
||||||
if kb.redirectChoice:
|
|
||||||
return None
|
|
||||||
|
|
||||||
infoMsg = "testing if the url is stable, wait a few seconds"
|
infoMsg = "testing if the url is stable, wait a few seconds"
|
||||||
logger.info(infoMsg)
|
logger.info(infoMsg)
|
||||||
|
|
||||||
|
@ -754,6 +751,9 @@ def checkStability():
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
secondPage, _ = Request.queryPage(content=True, raise404=False)
|
secondPage, _ = Request.queryPage(content=True, raise404=False)
|
||||||
|
|
||||||
|
if kb.redirectChoice:
|
||||||
|
return None
|
||||||
|
|
||||||
kb.pageStable = (firstPage == secondPage)
|
kb.pageStable = (firstPage == secondPage)
|
||||||
|
|
||||||
if kb.pageStable:
|
if kb.pageStable:
|
||||||
|
|
|
@ -152,9 +152,8 @@ class HASHDB_KEYS:
|
||||||
KB_DYNAMIC_MARKINGS = "KB_DYNAMIC_MARKINGS"
|
KB_DYNAMIC_MARKINGS = "KB_DYNAMIC_MARKINGS"
|
||||||
|
|
||||||
class REDIRECTION:
|
class REDIRECTION:
|
||||||
FOLLOW = "1"
|
YES = "Y"
|
||||||
ORIGINAL = "2"
|
NO = "N"
|
||||||
IGNORE = "3"
|
|
||||||
|
|
||||||
class PAYLOAD:
|
class PAYLOAD:
|
||||||
SQLINJECTION = {
|
SQLINJECTION = {
|
||||||
|
|
|
@ -29,6 +29,7 @@ from lib.core.settings import UPPER_RATIO_BOUND
|
||||||
from lib.core.threads import getCurrentThreadData
|
from lib.core.threads import getCurrentThreadData
|
||||||
|
|
||||||
def comparison(page, headers, code=None, getRatioValue=False, pageLength=None):
|
def comparison(page, headers, code=None, getRatioValue=False, pageLength=None):
|
||||||
|
print "AA: ", page[:100]
|
||||||
if page is None and pageLength is None:
|
if page is None and pageLength is None:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
|
@ -305,11 +305,10 @@ class Connect:
|
||||||
|
|
||||||
# Get HTTP response
|
# Get HTTP response
|
||||||
if hasattr(conn, 'redurl'):
|
if hasattr(conn, 'redurl'):
|
||||||
page = threadData.lastRedirectMsg[1] if kb.redirectChoice == REDIRECTION.IGNORE\
|
page = threadData.lastRedirectMsg[1] if kb.redirectChoice == REDIRECTION.NO\
|
||||||
else kb.pageTemplate if kb.redirectChoice == REDIRECTION.ORIGINAL\
|
|
||||||
else conn.read()
|
else conn.read()
|
||||||
skipLogTraffic = kb.redirectChoice != REDIRECTION.FOLLOW
|
skipLogTraffic = kb.redirectChoice == REDIRECTION.NO
|
||||||
code = conn.redcode if kb.redirectChoice != REDIRECTION.ORIGINAL else kb.originalCode
|
code = conn.redcode
|
||||||
else:
|
else:
|
||||||
page = conn.read()
|
page = conn.read()
|
||||||
|
|
||||||
|
|
|
@ -40,13 +40,10 @@ class SmartRedirectHandler(urllib2.HTTPRedirectHandler):
|
||||||
def _ask_redirect_choice(self, redcode, redurl):
|
def _ask_redirect_choice(self, redcode, redurl):
|
||||||
if kb.redirectChoice is None and kb.originalPage:
|
if kb.redirectChoice is None and kb.originalPage:
|
||||||
msg = "sqlmap got a %d redirect to " % redcode
|
msg = "sqlmap got a %d redirect to " % redcode
|
||||||
msg += "'%s'. What do you want to do? " % redurl
|
msg += "'%s'. Do you want to follow? [Y/n] " % redurl
|
||||||
msg += "\n[1] Follow the redirection (default)"
|
choice = readInput(msg, default="Y")
|
||||||
msg += "\n[2] Stay on the original page"
|
|
||||||
msg += "\n[3] Ignore"
|
|
||||||
choice = readInput(msg, default="1")
|
|
||||||
|
|
||||||
kb.redirectChoice = choice
|
kb.redirectChoice = choice.upper()
|
||||||
|
|
||||||
def _process_http_redirect(self, result, headers, code, content, msg, redurl):
|
def _process_http_redirect(self, result, headers, code, content, msg, redurl):
|
||||||
content = decodePage(content, headers.get(HTTPHEADER.CONTENT_ENCODING), headers.get(HTTPHEADER.CONTENT_TYPE))
|
content = decodePage(content, headers.get(HTTPHEADER.CONTENT_ENCODING), headers.get(HTTPHEADER.CONTENT_TYPE))
|
||||||
|
@ -93,7 +90,7 @@ class SmartRedirectHandler(urllib2.HTTPRedirectHandler):
|
||||||
dbgMsg += "redirect response content (%s)" % msg
|
dbgMsg += "redirect response content (%s)" % msg
|
||||||
logger.debug(dbgMsg)
|
logger.debug(dbgMsg)
|
||||||
|
|
||||||
if kb.redirectChoice == REDIRECTION.FOLLOW or kb.originalPage is None:
|
if kb.redirectChoice == REDIRECTION.YES or kb.originalPage is None:
|
||||||
req.headers[HTTPHEADER.HOST] = getHostHeader(redurl)
|
req.headers[HTTPHEADER.HOST] = getHostHeader(redurl)
|
||||||
result = urllib2.HTTPRedirectHandler.http_error_302(self, req, fp, code, msg, headers)
|
result = urllib2.HTTPRedirectHandler.http_error_302(self, req, fp, code, msg, headers)
|
||||||
else:
|
else:
|
||||||
|
|
Loading…
Reference in New Issue
Block a user