Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 1f39dbd

Browse files
committed
Another patch regarding #4530
1 parent ccf9e7d commit 1f39dbd

3 files changed

Lines changed: 9 additions & 6 deletions

File tree

lib/core/settings.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
from thirdparty.six import unichr as _unichr
1919

2020
# sqlmap version (<major>.<minor>.<month>.<monthly commit>)
21-
VERSION = "1.5.1.16"
21+
VERSION = "1.5.1.17"
2222
TYPE = "dev" if VERSION.count('.') > 2 and VERSION.split('.')[-1] != '0' else "stable"
2323
TYPE_COLORS = {"dev": 33, "stable": 90, "pip": 34}
2424
VERSION_STRING = "sqlmap/%s#%s" % ('.'.join(VERSION.split('.')[:-1]) if VERSION.count('.') > 2 and VERSION.split('.')[-1] == '0' else VERSION, TYPE)
@@ -757,8 +757,8 @@
757757
# For preventing MemoryError exceptions (caused when using large sequences in difflib.SequenceMatcher)
758758
MAX_DIFFLIB_SEQUENCE_LENGTH = 10 * 1024 * 1024
759759

760-
# Maximum size used per page content in getHeuristicCharEncoding() and identYwaf
761-
MAX_CHAR_HEURISTICS_SIZE = 10000
760+
# Page size threshold used in heuristic checks (e.g. getHeuristicCharEncoding(), identYwaf, htmlParser, etc.)
761+
HEURISTIC_PAGE_SIZE_THRESHOLD = 64 * 1024
762762

763763
# Maximum (multi-threaded) length of entry in bisection algorithm
764764
MAX_BISECTION_LENGTH = 50 * 1024 * 1024

lib/parse/html.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
from lib.core.common import parseXmlFile
1414
from lib.core.data import kb
1515
from lib.core.data import paths
16+
from lib.core.settings import HEURISTIC_PAGE_SIZE_THRESHOLD
1617
from lib.core.threads import getCurrentThreadData
1718

1819
class HTMLHandler(ContentHandler):
@@ -69,6 +70,8 @@ def htmlParser(page):
6970
>>> threadData.lastErrorPage = None
7071
"""
7172

73+
page = page[:HEURISTIC_PAGE_SIZE_THRESHOLD]
74+
7275
xmlfile = paths.ERRORS_XML
7376
handler = HTMLHandler(page)
7477
key = hash(page)

lib/request/basic.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,8 @@
4343
from lib.core.settings import BLOCKED_IP_REGEX
4444
from lib.core.settings import DEFAULT_COOKIE_DELIMITER
4545
from lib.core.settings import EVENTVALIDATION_REGEX
46+
from lib.core.settings import HEURISTIC_PAGE_SIZE_THRESHOLD
4647
from lib.core.settings import IDENTYWAF_PARSE_LIMIT
47-
from lib.core.settings import MAX_CHAR_HEURISTICS_SIZE
4848
from lib.core.settings import MAX_CONNECTION_TOTAL_SIZE
4949
from lib.core.settings import META_CHARSET_REGEX
5050
from lib.core.settings import PARSE_HEADERS_LIMIT
@@ -259,7 +259,7 @@ def getHeuristicCharEncoding(page):
259259
"""
260260

261261
key = hash(page)
262-
retVal = kb.cache.encoding.get(key) or detect(page[:MAX_CHAR_HEURISTICS_SIZE])["encoding"]
262+
retVal = kb.cache.encoding.get(key) or detect(page[:HEURISTIC_PAGE_SIZE_THRESHOLD])["encoding"]
263263
kb.cache.encoding[key] = retVal
264264

265265
if retVal and retVal.lower().replace('-', "") == UNICODE_ENCODING.lower().replace('-', ""):
@@ -396,7 +396,7 @@ def processResponse(page, responseHeaders, code=None, status=None):
396396
logger.warning("parsed DBMS error message: '%s'" % msg.rstrip('.'))
397397

398398
if not conf.skipWaf and kb.processResponseCounter < IDENTYWAF_PARSE_LIMIT:
399-
rawResponse = "%s %s %s\n%s\n%s" % (_http_client.HTTPConnection._http_vsn_str, code or "", status or "", "".join(getUnicode(responseHeaders.headers if responseHeaders else [])), page[:MAX_CHAR_HEURISTICS_SIZE])
399+
rawResponse = "%s %s %s\n%s\n%s" % (_http_client.HTTPConnection._http_vsn_str, code or "", status or "", "".join(getUnicode(responseHeaders.headers if responseHeaders else [])), page[:HEURISTIC_PAGE_SIZE_THRESHOLD])
400400

401401
identYwaf.non_blind.clear()
402402
if identYwaf.non_blind_check(rawResponse, silent=True):

0 commit comments

Comments
 (0)