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 @@
-
-
+
+
-
+
-
+