Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
sqlmapproject
GitHub Repository: sqlmapproject/sqlmap
Path: blob/master/plugins/dbms/oracle/connector.py
3555 views
1
#!/usr/bin/env python
2
3
"""
4
Copyright (c) 2006-2026 sqlmap developers (https://sqlmap.org)
5
See the file 'LICENSE' for copying permission
6
"""
7
8
try:
9
import oracledb
10
except ImportError:
11
pass
12
13
import logging
14
import os
15
16
from lib.core.common import getSafeExString
17
from lib.core.convert import getText
18
from lib.core.data import conf
19
from lib.core.data import logger
20
from lib.core.exception import SqlmapConnectionException
21
from plugins.generic.connector import Connector as GenericConnector
22
23
os.environ["NLS_LANG"] = ".AL32UTF8"
24
25
class Connector(GenericConnector):
26
"""
27
Homepage: https://oracle.github.io/python-oracledb/
28
User: https://python-oracledb.readthedocs.io/en/latest/
29
License: https://github.com/oracle/python-oracledb/blob/main/LICENSE.txt
30
"""
31
32
def connect(self):
33
self.initConnection()
34
35
self.user = getText(self.user)
36
self.password = getText(self.password)
37
38
try:
39
dsn = oracledb.makedsn(self.hostname, self.port, service_name=self.db)
40
self.connector = oracledb.connect(user=self.user, password=self.password, dsn=dsn, mode=oracledb.AUTH_MODE_SYSDBA)
41
logger.info("successfully connected as SYSDBA")
42
except oracledb.DatabaseError:
43
# Try again without SYSDBA
44
try:
45
self.connector = oracledb.connect(user=self.user, password=self.password, dsn=dsn)
46
except oracledb.DatabaseError as ex:
47
raise SqlmapConnectionException(ex)
48
49
self.initCursor()
50
self.printConnected()
51
52
def fetchall(self):
53
try:
54
return self.cursor.fetchall()
55
except oracledb.InterfaceError as ex:
56
logger.log(logging.WARN if conf.dbmsHandler else logging.DEBUG, "(remote) '%s'" % getSafeExString(ex))
57
return None
58
59
def execute(self, query):
60
retVal = False
61
62
try:
63
self.cursor.execute(getText(query))
64
retVal = True
65
except oracledb.DatabaseError as ex:
66
logger.log(logging.WARN if conf.dbmsHandler else logging.DEBUG, "(remote) '%s'" % getSafeExString(ex))
67
68
self.connector.commit()
69
return retVal
70
71
def select(self, query):
72
retVal = None
73
74
if self.execute(query):
75
retVal = self.fetchall()
76
77
return retVal
78
79