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