diff --git a/lib/core/common.py b/lib/core/common.py index 48c0e1b4b..0744484f8 100644 --- a/lib/core/common.py +++ b/lib/core/common.py @@ -130,9 +130,9 @@ def formatDBMSfp(versions=None): return "%s %s" % (kb.dbms, " and ".join([version for version in versions])) -def __formatFingerprintString(values, chain="or"): +def __formatFingerprintString(values, chain=" or "): string = "|".join([v for v in values]) - return string.replace("|", " %s " % chain) + return string.replace("|", chain) def formatFingerprint(target, info): @@ -140,22 +140,24 @@ def formatFingerprint(target, info): This function format the back-end operating system fingerprint value and return its values formatted as a human readable string. - Examples of info dictionary: + Example of info (kb.headersFp) dictionary: { - "distrib": set(["2000"]), - "dbmsVersion": "8.00.194", - "dbmsRelease": "2000", - "dbmsServicePack": "0", - "type": set(["Windows"]) + 'distrib': set(['Ubuntu']), + 'type': set(['Linux']), + 'technology': set(['PHP 5.2.6', 'Apache 2.2.9']), + 'release': set(['8.10']) } + Example of info (kb.bannerFp) dictionary: + { - "distrib": set(["Ubuntu"]), - "release": set(["8.10"]), - "codename": set(["Intrepid"]), - "version": "5.0.67", - "type": set(["Linux"]) + 'sp': set(['Service Pack 4']), + 'dbmsVersion': '8.00.194', + 'dbmsServicePack': '0', + 'distrib': set(['2000']), + 'dbmsRelease': '2000', + 'type': set(['Windows']) } @return: detected back-end operating system based upon fingerprint @@ -165,25 +167,23 @@ def formatFingerprint(target, info): infoStr = "" - if not info or "type" not in info: - return infoStr - else: + if info and "type" in info: infoStr += "%s operating system: %s" % (target, __formatFingerprintString(info["type"])) - if "distrib" in info: - infoStr += " %s" % __formatFingerprintString(info["distrib"]) + if "distrib" in info: + infoStr += " %s" % __formatFingerprintString(info["distrib"]) - if "release" in info: - infoStr += " %s" % __formatFingerprintString(info["release"]) + if "release" in info: + infoStr += " %s" % __formatFingerprintString(info["release"]) - if "sp" in info: - infoStr += " %s" % __formatFingerprintString(info["sp"]) + if "sp" in info: + infoStr += " %s" % __formatFingerprintString(info["sp"]) - if "codename" in info: - infoStr += " (%s)" % __formatFingerprintString(info["codename"]) + if "codename" in info: + infoStr += " (%s)" % __formatFingerprintString(info["codename"]) if "technology" in info: - infoStr += "\nweb application technology: %s" % __formatFingerprintString(info["technology"], "and") + infoStr += "\nweb application technology: %s" % __formatFingerprintString(info["technology"], ", ") return infoStr diff --git a/lib/parse/handler.py b/lib/parse/handler.py index eae2bc8f1..9ca69b1d8 100644 --- a/lib/parse/handler.py +++ b/lib/parse/handler.py @@ -60,7 +60,8 @@ class FingerprintHandler(ContentHandler): if key not in self.__info.keys(): self.__info[key] = set() - self.__info[key].add(value) + for v in value.split("|"): + self.__info[key].add(v) def startElement(self, name, attrs): diff --git a/sqlmap.conf b/sqlmap.conf index 95ffc7b9c..8dab6a477 100644 --- a/sqlmap.conf +++ b/sqlmap.conf @@ -2,7 +2,22 @@ # Target URL. # Example: http://192.168.1.121/sqlmap/mysql/get_int.php?id=1&cat=2 -url = +# PHP and MySQL (local) +#url = http://127.0.0.1/sqlmap/mysql/get_int.php?id=1 +# PHP and Oracle (local) +#url = http://127.0.0.1/sqlmap/oracle/get_int.php?id=1 +# PHP and PostgreSQL (local) +#url = http://127.0.0.1/sqlmap/pgsql/get_int.php?id=1 +# PHP and Microsoft SQL Server (remote) +#url = http://127.0.0.1/sqlmap/mssql/get_int.php?id=1 +# PHP and MySQL (remote on Windows) +#url = http://127.0.0.1/sqlmap/mysql/win_get_int.php?id=1 +# ASP and Microsoft SQL Server (local) +#url = http://192.168.192.10/sqlmap/get_str.asp?name=luther +# ASP and MySQL (local) +#url = http://192.168.192.10/sqlmap/get_int.asp?id=1 +# ASP.NET and MySQL (local) +#url = http://192.168.192.10/sqlmap/get_int.aspx?id=1 # Rather than providing a target url, let Google return target # hosts as result of your Google dork expression. For a list of Google @@ -34,10 +49,10 @@ referer = # HTTP User-Agent header. Useful to fake the HTTP User-Agent header value # at each HTTP request # sqlmap will also test for SQL injection on the HTTP User-Agent value. -agent = sqlmap/0.6.1 (http://sqlmap.sourceforge.net) +agent = # Load a random HTTP User-Agent header from file -# Example: txt/user-agents.txt +# Example: ./txt/user-agents.txt userAgentsFile = # HTTP Authentication type. Useful only if the target url requires diff --git a/xml/banner/generic.xml b/xml/banner/generic.xml index 8b0d3fe1c..475786e28 100644 --- a/xml/banner/generic.xml +++ b/xml/banner/generic.xml @@ -56,7 +56,7 @@ - + diff --git a/xml/banner/server.xml b/xml/banner/server.xml index d0cb771a7..5be3dd14d 100644 --- a/xml/banner/server.xml +++ b/xml/banner/server.xml @@ -22,7 +22,7 @@ - + @@ -77,7 +77,7 @@ - + @@ -116,11 +116,11 @@ - + - + @@ -197,7 +197,7 @@ - + @@ -224,7 +224,7 @@ - + @@ -264,7 +264,7 @@ - + @@ -280,7 +280,7 @@ - + @@ -308,7 +308,7 @@ - + diff --git a/xml/banner/x-powered-by.xml b/xml/banner/x-powered-by.xml index d6d5e6a69..3afbf20d1 100644 --- a/xml/banner/x-powered-by.xml +++ b/xml/banner/x-powered-by.xml @@ -9,15 +9,15 @@ - - + + - + - +