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

Skip to content

Commit eee0387

Browse files
committed
minor refactoring
1 parent 4fa24ec commit eee0387

4 files changed

Lines changed: 22 additions & 10 deletions

File tree

lib/controller/controller.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
from lib.core.exception import sqlmapValueException
4848
from lib.core.exception import sqlmapUserQuitException
4949
from lib.core.session import setInjection
50+
from lib.core.settings import DEFAULT_GET_POST_DELIMITER
5051
from lib.core.settings import EMPTY_FORM_FIELDS_REGEX
5152
from lib.core.settings import IGNORE_PARAMETERS
5253
from lib.core.settings import LOW_TEXT_PERCENT
@@ -157,8 +158,8 @@ def __randomFillBlankFields(value):
157158
if not test or test[0] in ("y", "Y"):
158159
while extractRegexResult(EMPTY_FORM_FIELDS_REGEX, retVal):
159160
item = extractRegexResult(EMPTY_FORM_FIELDS_REGEX, retVal)
160-
if item[-1] == '&':
161-
retVal = retVal.replace(item, "%s%s&" % (item[:-1], randomStr()))
161+
if item[-1] == DEFAULT_GET_POST_DELIMITER:
162+
retVal = retVal.replace(item, "%s%s%s" % (item[:-1], randomStr(), DEFAULT_GET_POST_DELIMITER))
162163
else:
163164
retVal = retVal.replace(item, "%s%s" % (item, randomStr()))
164165

@@ -288,7 +289,7 @@ def start():
288289
message = "Edit POST data [default: %s]%s: " % (urlencode(conf.data) if conf.data else "None", " (Warning: blank fields detected)" if conf.data and extractRegexResult(EMPTY_FORM_FIELDS_REGEX, conf.data) else "")
289290
conf.data = readInput(message, default=conf.data)
290291
conf.data = __randomFillBlankFields(conf.data)
291-
conf.data = urldecode(conf.data)
292+
conf.data = urldecode(conf.data) if conf.data and urlencode(DEFAULT_GET_POST_DELIMITER, None) not in conf.data else conf.data
292293

293294
elif conf.method == HTTPMETHOD.GET:
294295
if targetUrl.find("?") > -1:

lib/core/common.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,8 @@
7474
from lib.core.exception import sqlmapSyntaxException
7575
from lib.core.optiondict import optDict
7676
from lib.core.settings import BIGARRAY_CHUNK_LENGTH
77+
from lib.core.settings import DEFAULT_COOKIE_DELIMITER
78+
from lib.core.settings import DEFAULT_GET_POST_DELIMITER
7779
from lib.core.settings import INFERENCE_UNKNOWN_CHAR
7880
from lib.core.settings import UNICODE_ENCODING
7981
from lib.core.settings import DBMS_DICT
@@ -658,7 +660,7 @@ def paramToDict(place, parameters=None):
658660
if place != PLACE.SOAP:
659661
parameters = parameters.replace(", ", ",")
660662

661-
splitParams = parameters.split(conf.pDel or (";" if place == PLACE.COOKIE else "&"))
663+
splitParams = parameters.split(conf.pDel or (DEFAULT_COOKIE_DELIMITER if place == PLACE.COOKIE else DEFAULT_GET_POST_DELIMITER))
662664

663665
for element in splitParams:
664666
elem = element.split("=")
@@ -1270,7 +1272,7 @@ def parseTargetUrl():
12701272
conf.port = 80
12711273

12721274
if __urlSplit[3]:
1273-
conf.parameters[PLACE.GET] = urldecode(__urlSplit[3])
1275+
conf.parameters[PLACE.GET] = urldecode(__urlSplit[3]) if __urlSplit[3] and urlencode(DEFAULT_GET_POST_DELIMITER, None) not in __urlSplit[3] else __urlSplit[3]
12741276

12751277
conf.url = "%s://%s:%d%s" % (conf.scheme, conf.hostname, conf.port, conf.path)
12761278
conf.url = conf.url.replace(URI_QUESTION_MARKER, '?')
@@ -3109,7 +3111,8 @@ def geturl(self):
31093111
request = form.click()
31103112
url = urldecode(request.get_full_url(), kb.pageEncoding)
31113113
method = request.get_method()
3112-
data = urldecode(request.get_data(), kb.pageEncoding) if request.has_data() else None
3114+
data = request if request.has_data() else None
3115+
data = urldecode(data, kb.pageEncoding) if data and urlencode(DEFAULT_GET_POST_DELIMITER, None) not in data else data
31133116
if not data and method and method.upper() == HTTPMETHOD.POST:
31143117
debugMsg = "invalid POST form with blank data detected"
31153118
logger.debug(debugMsg)

lib/core/option.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050
from lib.core.common import setOptimize
5151
from lib.core.common import UnicodeRawConfigParser
5252
from lib.core.convert import urldecode
53+
from lib.core.convert import urlencode
5354
from lib.core.data import conf
5455
from lib.core.data import kb
5556
from lib.core.data import logger
@@ -77,6 +78,7 @@
7778
from lib.core.exception import sqlmapUserQuitException
7879
from lib.core.optiondict import optDict
7980
from lib.core.settings import CODECS_LIST_PAGE
81+
from lib.core.settings import DEFAULT_GET_POST_DELIMITER
8082
from lib.core.settings import DEFAULT_PAGE_ENCODING
8183
from lib.core.settings import DEFAULT_TOR_PORTS
8284
from lib.core.settings import GENERAL_IP_ADDRESS_REGEX
@@ -307,7 +309,7 @@ def __parseBurpLog(content):
307309
port = None
308310

309311
if not kb.targetUrls or url not in addedTargetUrls:
310-
kb.targetUrls.add((url, method, urldecode(data), cookie))
312+
kb.targetUrls.add((url, method, urldecode(data) if data and urlencode(DEFAULT_GET_POST_DELIMITER, None) not in data else data, cookie))
311313
addedTargetUrls.add(url)
312314

313315
fp = openFile(reqFile, "rb")
@@ -1297,10 +1299,10 @@ def __cleanupOptions():
12971299
if re.search(r'%[0-9a-f]{2}', conf.data, re.I):
12981300
original = conf.data
12991301
class _(unicode): pass
1300-
conf.data = _(urldecode(conf.data))
1302+
conf.data = _(urldecode(conf.data) if conf.data and urlencode(DEFAULT_GET_POST_DELIMITER, None) not in conf.data else conf.data)
13011303
setattr(conf.data, UNENCODED_ORIGINAL_VALUE, original)
13021304
else:
1303-
conf.data = urldecode(conf.data)
1305+
conf.data = urldecode(conf.data) if conf.data and urlencode(DEFAULT_GET_POST_DELIMITER, None) not in conf.data else conf.data
13041306

13051307
if conf.os:
13061308
conf.os = conf.os.capitalize()

lib/core/settings.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -408,4 +408,10 @@
408408
UNENCODED_ORIGINAL_VALUE = 'original'
409409

410410
# Common column names containing usernames (used for hash cracking in some cases)
411-
COMMON_USER_COLUMNS = ('user', 'username', 'user_name', 'benutzername', 'benutzer', 'utilisateur', 'usager', 'consommateur', 'utente', 'utilizzatore', 'usufrutuario', 'korisnik', 'usuario', 'consumidor')
411+
COMMON_USER_COLUMNS = ('user', 'username', 'user_name', 'benutzername', 'benutzer', 'utilisateur', 'usager', 'consommateur', 'utente', 'utilizzatore', 'usufrutuario', 'korisnik', 'usuario', 'consumidor')
412+
413+
# Default delimiter in GET/POST values
414+
DEFAULT_GET_POST_DELIMITER = '&'
415+
416+
# Default delimiter in cookie values
417+
DEFAULT_COOKIE_DELIMITER = ';'

0 commit comments

Comments
 (0)