From bdbe8ff9d906a3817cada2ef49d947f4b727a8d6 Mon Sep 17 00:00:00 2001 From: Miroslav Stampar Date: Mon, 30 Jul 2012 22:39:45 +0200 Subject: [PATCH] Fix for an Issue #132 --- lib/core/common.py | 47 +++++++++++++++++++++++++++------------------- 1 file changed, 28 insertions(+), 19 deletions(-) diff --git a/lib/core/common.py b/lib/core/common.py index ea1574039..428282600 100644 --- a/lib/core/common.py +++ b/lib/core/common.py @@ -3009,28 +3009,37 @@ def findPageForms(content, url, raise_=False, addToTargets=False): if forms: for form in forms: - for control in form.controls: - if hasattr(control, "items"): - # if control has selectable items select first non-disabled - for item in control.items: - if not item.disabled: - if not item.selected: - item.selected = True - break + try: + for control in form.controls: + if hasattr(control, "items"): + # if control has selectable items select first non-disabled + for item in control.items: + if not item.disabled: + if not item.selected: + item.selected = True + break - request = form.click() - url = urldecode(request.get_full_url(), kb.pageEncoding) - method = request.get_method() - data = request.get_data() if request.has_data() else None - data = urldecode(data, kb.pageEncoding) if data and urlencode(DEFAULT_GET_POST_DELIMITER, None) not in data else data + request = form.click() + except (ValueError, TypeError), ex: + errMsg = "there has been a problem while " + errMsg += "processing page forms ('%s')" % ex + if raise_: + raise sqlmapGenericException, errMsg + else: + logger.debug(errMsg) + else: + url = urldecode(request.get_full_url(), kb.pageEncoding) + method = request.get_method() + data = request.get_data() if request.has_data() else None + data = urldecode(data, kb.pageEncoding) if data and urlencode(DEFAULT_GET_POST_DELIMITER, None) not in data else data - if not data and method and method.upper() == HTTPMETHOD.POST: - debugMsg = "invalid POST form with blank data detected" - logger.debug(debugMsg) - continue + if not data and method and method.upper() == HTTPMETHOD.POST: + debugMsg = "invalid POST form with blank data detected" + logger.debug(debugMsg) + continue - target = (url, method, data, conf.cookie) - retVal.add(target) + target = (url, method, data, conf.cookie) + retVal.add(target) else: errMsg = "there were no forms found at the given target url" if raise_: