Fix for an Issue #132

This commit is contained in:
Miroslav Stampar 2012-07-30 22:39:45 +02:00
parent 47073f4afd
commit bdbe8ff9d9

View File

@ -3009,28 +3009,37 @@ def findPageForms(content, url, raise_=False, addToTargets=False):
if forms: if forms:
for form in forms: for form in forms:
for control in form.controls: try:
if hasattr(control, "items"): for control in form.controls:
# if control has selectable items select first non-disabled if hasattr(control, "items"):
for item in control.items: # if control has selectable items select first non-disabled
if not item.disabled: for item in control.items:
if not item.selected: if not item.disabled:
item.selected = True if not item.selected:
break item.selected = True
break
request = form.click() request = form.click()
url = urldecode(request.get_full_url(), kb.pageEncoding) except (ValueError, TypeError), ex:
method = request.get_method() errMsg = "there has been a problem while "
data = request.get_data() if request.has_data() else None errMsg += "processing page forms ('%s')" % ex
data = urldecode(data, kb.pageEncoding) if data and urlencode(DEFAULT_GET_POST_DELIMITER, None) not in data else data 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: if not data and method and method.upper() == HTTPMETHOD.POST:
debugMsg = "invalid POST form with blank data detected" debugMsg = "invalid POST form with blank data detected"
logger.debug(debugMsg) logger.debug(debugMsg)
continue continue
target = (url, method, data, conf.cookie) target = (url, method, data, conf.cookie)
retVal.add(target) retVal.add(target)
else: else:
errMsg = "there were no forms found at the given target url" errMsg = "there were no forms found at the given target url"
if raise_: if raise_: