2008-10-15 19:38:22 +04:00
|
|
|
#!/usr/bin/env python
|
|
|
|
|
|
|
|
"""
|
2008-10-15 19:56:32 +04:00
|
|
|
$Id$
|
2008-10-15 19:38:22 +04:00
|
|
|
|
|
|
|
This file is part of the sqlmap project, http://sqlmap.sourceforge.net.
|
|
|
|
|
2010-03-03 18:26:27 +03:00
|
|
|
Copyright (c) 2007-2010 Bernardo Damele A. G. <bernardo.damele@gmail.com>
|
2009-04-22 15:48:07 +04:00
|
|
|
Copyright (c) 2006 Daniele Bellucci <daniele.bellucci@gmail.com>
|
2008-10-15 19:38:22 +04:00
|
|
|
|
|
|
|
sqlmap is free software; you can redistribute it and/or modify it under
|
|
|
|
the terms of the GNU General Public License as published by the Free
|
|
|
|
Software Foundation version 2 of the License.
|
|
|
|
|
|
|
|
sqlmap is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
|
|
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
|
|
|
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
|
|
|
details.
|
|
|
|
|
|
|
|
You should have received a copy of the GNU General Public License along
|
|
|
|
with sqlmap; if not, write to the Free Software Foundation, Inc., 51
|
|
|
|
Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
|
|
"""
|
|
|
|
|
|
|
|
import logging
|
2009-06-11 19:01:48 +04:00
|
|
|
import subprocess
|
2008-10-15 19:38:22 +04:00
|
|
|
import sys
|
|
|
|
|
|
|
|
# sqlmap version and site
|
2010-03-15 14:04:57 +03:00
|
|
|
VERSION = "0.9-dev"
|
2010-03-03 19:19:17 +03:00
|
|
|
VERSION_STRING = "sqlmap/%s" % VERSION
|
|
|
|
DESCRIPTION = "automatic SQL injection and database takeover tool"
|
2008-10-15 19:38:22 +04:00
|
|
|
SITE = "http://sqlmap.sourceforge.net"
|
|
|
|
|
|
|
|
# sqlmap logger
|
|
|
|
logging.addLevelName(9, "TRAFFIC OUT")
|
|
|
|
logging.addLevelName(8, "TRAFFIC IN")
|
2009-04-22 15:48:07 +04:00
|
|
|
|
2008-10-15 19:38:22 +04:00
|
|
|
LOGGER = logging.getLogger("sqlmapLog")
|
|
|
|
LOGGER_HANDLER = logging.StreamHandler(sys.stdout)
|
|
|
|
FORMATTER = logging.Formatter("[%(asctime)s] [%(levelname)s] %(message)s", "%H:%M:%S")
|
|
|
|
|
|
|
|
LOGGER_HANDLER.setFormatter(FORMATTER)
|
|
|
|
LOGGER.addHandler(LOGGER_HANDLER)
|
|
|
|
LOGGER.setLevel(logging.WARN)
|
|
|
|
|
2009-04-22 15:48:07 +04:00
|
|
|
# System variables
|
2009-06-11 19:01:48 +04:00
|
|
|
IS_WIN = subprocess.mswindows
|
2009-04-22 15:48:07 +04:00
|
|
|
PLATFORM = sys.platform.lower()
|
|
|
|
PYVERSION = sys.version.split()[0]
|
|
|
|
|
2008-10-15 19:38:22 +04:00
|
|
|
# Url to update Microsoft SQL Server XML versions file from
|
|
|
|
MSSQL_VERSIONS_URL = "http://www.sqlsecurity.com/FAQs/SQLServerVersionDatabase/tabid/63/Default.aspx"
|
|
|
|
|
|
|
|
# Database managemen system specific variables
|
2009-04-22 15:48:07 +04:00
|
|
|
MSSQL_SYSTEM_DBS = ( "Northwind", "model", "msdb", "pubs", "tempdb" )
|
|
|
|
MYSQL_SYSTEM_DBS = ( "information_schema", "mysql" ) # Before MySQL 5.0 only "mysql"
|
2010-01-09 03:05:00 +03:00
|
|
|
PGSQL_SYSTEM_DBS = ( "information_schema", "pg_catalog", "pg_toast" )
|
2009-04-22 15:48:07 +04:00
|
|
|
ORACLE_SYSTEM_DBS = ( "SYSTEM", "SYSAUX" ) # These are TABLESPACE_NAME
|
2008-10-15 19:38:22 +04:00
|
|
|
|
2009-04-22 15:48:07 +04:00
|
|
|
MSSQL_ALIASES = [ "microsoft sql server", "mssqlserver", "mssql", "ms" ]
|
|
|
|
MYSQL_ALIASES = [ "mysql", "my" ]
|
|
|
|
PGSQL_ALIASES = [ "postgresql", "postgres", "pgsql", "psql", "pg" ]
|
|
|
|
ORACLE_ALIASES = [ "oracle", "orcl", "ora", "or" ]
|
2008-11-12 03:36:50 +03:00
|
|
|
|
2009-04-22 15:48:07 +04:00
|
|
|
SUPPORTED_DBMS = MSSQL_ALIASES + MYSQL_ALIASES + PGSQL_ALIASES + ORACLE_ALIASES
|
|
|
|
SUPPORTED_OS = ( "linux", "windows" )
|
2009-02-09 13:28:03 +03:00
|
|
|
|
2009-04-22 15:48:07 +04:00
|
|
|
SQL_STATEMENTS = {
|
|
|
|
"SQL SELECT statement": (
|
2008-12-20 16:21:47 +03:00
|
|
|
"select ",
|
2009-02-09 13:28:03 +03:00
|
|
|
"show ",
|
2009-02-03 02:44:19 +03:00
|
|
|
" top ",
|
2010-01-05 19:15:31 +03:00
|
|
|
" distinct ",
|
2008-12-20 16:21:47 +03:00
|
|
|
" from ",
|
2008-12-23 01:48:44 +03:00
|
|
|
" from dual",
|
2008-12-20 16:21:47 +03:00
|
|
|
" where ",
|
|
|
|
" group by ",
|
|
|
|
" order by ",
|
|
|
|
" having ",
|
|
|
|
" limit ",
|
|
|
|
" offset ",
|
|
|
|
" union all ",
|
2009-01-20 00:27:51 +03:00
|
|
|
" rownum as ",
|
|
|
|
"(case ", ),
|
2008-12-19 23:09:46 +03:00
|
|
|
|
2009-04-22 15:48:07 +04:00
|
|
|
"SQL data definition": (
|
2008-12-20 16:21:47 +03:00
|
|
|
"create ",
|
2009-04-22 15:48:07 +04:00
|
|
|
"declare ",
|
2008-12-20 16:21:47 +03:00
|
|
|
"drop ",
|
|
|
|
"truncate ",
|
|
|
|
"alter ", ),
|
2008-12-19 23:09:46 +03:00
|
|
|
|
2009-04-22 15:48:07 +04:00
|
|
|
"SQL data manipulation": (
|
2008-12-20 16:21:47 +03:00
|
|
|
"insert ",
|
|
|
|
"update ",
|
|
|
|
"delete ",
|
|
|
|
"merge ", ),
|
2008-12-19 23:09:46 +03:00
|
|
|
|
2009-04-22 15:48:07 +04:00
|
|
|
"SQL data control": (
|
2008-12-20 16:21:47 +03:00
|
|
|
"grant ", ),
|
2008-12-19 23:09:46 +03:00
|
|
|
|
2009-04-22 15:48:07 +04:00
|
|
|
"SQL data execution": (
|
2009-01-10 17:39:27 +03:00
|
|
|
"execute ", ),
|
|
|
|
|
2009-04-22 15:48:07 +04:00
|
|
|
"SQL transaction": (
|
2008-12-20 16:21:47 +03:00
|
|
|
"start transaction ",
|
|
|
|
"begin work ",
|
|
|
|
"begin transaction ",
|
|
|
|
"commit ",
|
|
|
|
"rollback ", ),
|
2009-04-22 15:48:07 +04:00
|
|
|
}
|