From ef987c6954def592e462ba9c3ea559e558445ef2 Mon Sep 17 00:00:00 2001 From: Miroslav Stampar Date: Sat, 29 Oct 2011 09:32:20 +0000 Subject: [PATCH] adding compatibility support for using --crawl and --forms together --- extra/clientform/clientform.py | 3 +++ lib/core/common.py | 12 ++++++++---- lib/core/option.py | 6 +----- lib/utils/crawler.py | 4 ++++ 4 files changed, 16 insertions(+), 9 deletions(-) diff --git a/extra/clientform/clientform.py b/extra/clientform/clientform.py index d9e2eec73..d2e68ca7e 100644 --- a/extra/clientform/clientform.py +++ b/extra/clientform/clientform.py @@ -3363,6 +3363,9 @@ class HTMLForm: if self.enctype == "application/x-www-form-urlencoded": return (uri, urlencode(self._pairs()), [("Content-Type", self.enctype)]) + elif self.enctype == "text/plain": + return (uri, self._pairs(), + [("Content-Type", self.enctype)]) elif self.enctype == "multipart/form-data": data = StringIO() http_hdrs = [] diff --git a/lib/core/common.py b/lib/core/common.py index 8f71bcc4e..2e2d4c56e 100644 --- a/lib/core/common.py +++ b/lib/core/common.py @@ -3073,7 +3073,7 @@ def asciifyUrl(url, forceQuote=False): def findPageForms(content, url, raise_=False, addToTargets=False): class _(StringIO): - def __init__(self): + def __init__(self, content, url): StringIO.__init__(self, unicodeencode(content, kb.pageEncoding) if isinstance(content, unicode) else content) self._url = url def geturl(self): @@ -3083,17 +3083,21 @@ def findPageForms(content, url, raise_=False, addToTargets=False): errMsg = "can't parse forms as the page content appears to be blank" raise sqlmapGenericException, errMsg + forms = None retVal = set() - response = _() + response = _(content, url) try: forms = ParseResponse(response, backwards_compat=False) except ParseError: errMsg = "badly formed HTML at the target url. will try to filter it" logger.error(errMsg) response.seek(0) - filtered = _("".join(re.findall(r'', response.read(), re.I | re.S)), response.geturl()) + filtered = re.findall(r'', response.read(), re.I | re.S) + for i in xrange(len(filtered)): + filtered[i] = filtered[i][filtered[i].lower().rfind("