Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
sqlmapproject
GitHub Repository: sqlmapproject/sqlmap
Path: blob/master/plugins/dbms/mysql/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 pymysql
10
except:
11
pass
12
13
import logging
14
import struct
15
import sys
16
17
from lib.core.common import getSafeExString
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
class Connector(GenericConnector):
24
"""
25
Homepage: https://github.com/PyMySQL/PyMySQL
26
User guide: https://pymysql.readthedocs.io/en/latest/
27
Debian package: python3-pymysql
28
License: MIT
29
30
Possible connectors: http://wiki.python.org/moin/MySQL
31
"""
32
33
def connect(self):
34
self.initConnection()
35
36
try:
37
self.connector = pymysql.connect(host=self.hostname, user=self.user, passwd=self.password.encode(sys.stdin.encoding), db=self.db, port=self.port, connect_timeout=conf.timeout, use_unicode=True)
38
except (pymysql.OperationalError, pymysql.InternalError, pymysql.ProgrammingError, struct.error) as ex:
39
raise SqlmapConnectionException(getSafeExString(ex))
40
41
self.initCursor()
42
self.printConnected()
43
44
def fetchall(self):
45
try:
46
return self.cursor.fetchall()
47
except pymysql.ProgrammingError as ex:
48
logger.log(logging.WARN if conf.dbmsHandler else logging.DEBUG, "(remote) %s" % getSafeExString(ex))
49
return None
50
51
def execute(self, query):
52
retVal = False
53
54
try:
55
self.cursor.execute(query)
56
retVal = True
57
except (pymysql.OperationalError, pymysql.ProgrammingError) as ex:
58
logger.log(logging.WARN if conf.dbmsHandler else logging.DEBUG, "(remote) %s" % getSafeExString(ex))
59
except pymysql.InternalError as ex:
60
raise SqlmapConnectionException(getSafeExString(ex))
61
62
self.connector.commit()
63
64
return retVal
65
66
def select(self, query):
67
retVal = None
68
69
if self.execute(query):
70
retVal = self.fetchall()
71
72
return retVal
73
74