mirror of
https://github.com/sqlmapproject/sqlmap.git
synced 2025-02-02 20:54:13 +03:00
Fixes #2228
This commit is contained in:
parent
6c4e9ae427
commit
9ff2dcf1c1
|
@ -19,7 +19,7 @@ from lib.core.enums import DBMS_DIRECTORY_NAME
|
||||||
from lib.core.enums import OS
|
from lib.core.enums import OS
|
||||||
|
|
||||||
# sqlmap version (<major>.<minor>.<month>.<monthly commit>)
|
# sqlmap version (<major>.<minor>.<month>.<monthly commit>)
|
||||||
VERSION = "1.0.10.34"
|
VERSION = "1.0.10.35"
|
||||||
TYPE = "dev" if VERSION.count('.') > 2 and VERSION.split('.')[-1] != '0' else "stable"
|
TYPE = "dev" if VERSION.count('.') > 2 and VERSION.split('.')[-1] != '0' else "stable"
|
||||||
TYPE_COLORS = {"dev": 33, "stable": 90, "pip": 34}
|
TYPE_COLORS = {"dev": 33, "stable": 90, "pip": 34}
|
||||||
VERSION_STRING = "sqlmap/%s#%s" % ('.'.join(VERSION.split('.')[:-1]) if VERSION.count('.') > 2 and VERSION.split('.')[-1] == '0' else VERSION, TYPE)
|
VERSION_STRING = "sqlmap/%s#%s" % ('.'.join(VERSION.split('.')[:-1]) if VERSION.count('.') > 2 and VERSION.split('.')[-1] == '0' else VERSION, TYPE)
|
||||||
|
|
|
@ -5,6 +5,7 @@ Copyright (c) 2006-2016 sqlmap developers (http://sqlmap.org/)
|
||||||
See the file 'doc/COPYING' for copying permission
|
See the file 'doc/COPYING' for copying permission
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
import re
|
||||||
import threading
|
import threading
|
||||||
import time
|
import time
|
||||||
|
|
||||||
|
@ -45,6 +46,7 @@ from lib.core.settings import MAX_REVALIDATION_STEPS
|
||||||
from lib.core.settings import NULL
|
from lib.core.settings import NULL
|
||||||
from lib.core.settings import PARTIAL_HEX_VALUE_MARKER
|
from lib.core.settings import PARTIAL_HEX_VALUE_MARKER
|
||||||
from lib.core.settings import PARTIAL_VALUE_MARKER
|
from lib.core.settings import PARTIAL_VALUE_MARKER
|
||||||
|
from lib.core.settings import PAYLOAD_DELIMITER
|
||||||
from lib.core.settings import RANDOM_INTEGER_MARKER
|
from lib.core.settings import RANDOM_INTEGER_MARKER
|
||||||
from lib.core.settings import VALID_TIME_CHARS_RUN_THRESHOLD
|
from lib.core.settings import VALID_TIME_CHARS_RUN_THRESHOLD
|
||||||
from lib.core.threads import getCurrentThreadData
|
from lib.core.threads import getCurrentThreadData
|
||||||
|
@ -201,13 +203,15 @@ def bisection(payload, expression, length=None, charsetType=None, firstChar=None
|
||||||
Used in inference - in time-based SQLi if original and retrieved value are not equal there will be a deliberate delay
|
Used in inference - in time-based SQLi if original and retrieved value are not equal there will be a deliberate delay
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
validationPayload = re.sub(r"(%s.*?)%s(.*?%s)" % (PAYLOAD_DELIMITER, INFERENCE_GREATER_CHAR, PAYLOAD_DELIMITER), r"\g<1>%s\g<2>" % INFERENCE_NOT_EQUALS_CHAR, payload)
|
||||||
|
|
||||||
if "'%s'" % CHAR_INFERENCE_MARK not in payload:
|
if "'%s'" % CHAR_INFERENCE_MARK not in payload:
|
||||||
forgedPayload = safeStringFormat(payload.replace(INFERENCE_GREATER_CHAR, INFERENCE_NOT_EQUALS_CHAR), (expressionUnescaped, idx, value))
|
forgedPayload = safeStringFormat(validationPayload, (expressionUnescaped, idx, value))
|
||||||
else:
|
else:
|
||||||
# e.g.: ... > '%c' -> ... > ORD(..)
|
# e.g.: ... > '%c' -> ... > ORD(..)
|
||||||
markingValue = "'%s'" % CHAR_INFERENCE_MARK
|
markingValue = "'%s'" % CHAR_INFERENCE_MARK
|
||||||
unescapedCharValue = unescaper.escape("'%s'" % decodeIntToUnicode(value))
|
unescapedCharValue = unescaper.escape("'%s'" % decodeIntToUnicode(value))
|
||||||
forgedPayload = safeStringFormat(payload.replace(INFERENCE_GREATER_CHAR, INFERENCE_NOT_EQUALS_CHAR), (expressionUnescaped, idx)).replace(markingValue, unescapedCharValue)
|
forgedPayload = safeStringFormat(validationPayload, (expressionUnescaped, idx)).replace(markingValue, unescapedCharValue)
|
||||||
|
|
||||||
result = not Request.queryPage(forgedPayload, timeBasedCompare=timeBasedCompare, raise404=False)
|
result = not Request.queryPage(forgedPayload, timeBasedCompare=timeBasedCompare, raise404=False)
|
||||||
|
|
||||||
|
|
|
@ -45,7 +45,7 @@ e60456db5380840a586654344003d4e6 lib/core/readlineng.py
|
||||||
5ef56abb8671c2ca6ceecb208258e360 lib/core/replication.py
|
5ef56abb8671c2ca6ceecb208258e360 lib/core/replication.py
|
||||||
99a2b496b9d5b546b335653ca801153f lib/core/revision.py
|
99a2b496b9d5b546b335653ca801153f lib/core/revision.py
|
||||||
7c15dd2777af4dac2c89cab6df17462e lib/core/session.py
|
7c15dd2777af4dac2c89cab6df17462e lib/core/session.py
|
||||||
a63ccc57884b5d715abfeabb595ba32d lib/core/settings.py
|
ebb5826abf7715ff85c4c55de3f0a12f lib/core/settings.py
|
||||||
7af83e4f18cab6dff5e67840eb65be80 lib/core/shell.py
|
7af83e4f18cab6dff5e67840eb65be80 lib/core/shell.py
|
||||||
23657cd7d924e3c6d225719865855827 lib/core/subprocessng.py
|
23657cd7d924e3c6d225719865855827 lib/core/subprocessng.py
|
||||||
c3ace7874a536d801f308cf1fd03df99 lib/core/target.py
|
c3ace7874a536d801f308cf1fd03df99 lib/core/target.py
|
||||||
|
@ -86,7 +86,7 @@ cc9c82cfffd8ee9b25ba3af6284f057e lib/takeover/__init__.py
|
||||||
7d6cd7bdfc8f4bc4e8aed60c84cdf87f lib/takeover/udf.py
|
7d6cd7bdfc8f4bc4e8aed60c84cdf87f lib/takeover/udf.py
|
||||||
d9bdcc17091374c53ad2eea7fd72a909 lib/takeover/web.py
|
d9bdcc17091374c53ad2eea7fd72a909 lib/takeover/web.py
|
||||||
9af83a62de360184f1c14e69b8a95cfe lib/takeover/xp_cmdshell.py
|
9af83a62de360184f1c14e69b8a95cfe lib/takeover/xp_cmdshell.py
|
||||||
27d41f38de7348600309e1cb6741fb2e lib/techniques/blind/inference.py
|
c066bd01bd02135841e4f6875644ebd2 lib/techniques/blind/inference.py
|
||||||
cc9c82cfffd8ee9b25ba3af6284f057e lib/techniques/blind/__init__.py
|
cc9c82cfffd8ee9b25ba3af6284f057e lib/techniques/blind/__init__.py
|
||||||
cc9c82cfffd8ee9b25ba3af6284f057e lib/techniques/brute/__init__.py
|
cc9c82cfffd8ee9b25ba3af6284f057e lib/techniques/brute/__init__.py
|
||||||
d36effffe64e63ef9b3be490f850e2cc lib/techniques/brute/use.py
|
d36effffe64e63ef9b3be490f850e2cc lib/techniques/brute/use.py
|
||||||
|
|
Loading…
Reference in New Issue
Block a user