Skip to content

Commit aa459de

Browse files
committed
use linked rpc queries
1 parent 4eb21c0 commit aa459de

7 files changed

Lines changed: 20 additions & 8 deletions

File tree

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
11
# Changelog
2+
## [v0.1.4] - 02/03/2024
3+
### Fixed
4+
- Issue [#9](https://github.com/Tw1sm/PySQLRecon/issues/9)
5+
- `search`, `columns` and `rows` modules now appropriately use linked rpc queries - these modules would previously fail
6+
27
## [v0.1.3] - 12/30/2023
38
### Fixed
49
- Issue [#3](https://github.com/Tw1sm/PySQLRecon/issues/3)

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[tool.poetry]
22
name = "pysqlrecon"
3-
version = "0.1.3"
3+
version = "0.1.4"
44
description = "Offensive MSSQL Python toolkit"
55
authors = ["Matt Creel <mcreel31@gmail.com>"]
66
readme = "README.md"

pysqlrecon/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = '0.1.3'
1+
__version__ = '0.1.4'

pysqlrecon/lib/query.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,14 @@ class QueryMixin:
55

66
# basic query handler for simple commands like
77
# whoami, databases, columns, users, etc.
8-
def query_handler(self, query) -> None:
8+
def query_handler(self, query, use_rpc_query=False) -> None:
99
try:
1010
# execute linked query
1111
if self.link is not None:
12-
self.exec_lquery(query)
12+
if use_rpc_query and self.check_rpc_on_link(self.link):
13+
self.exec_lquery_rpc(query)
14+
else:
15+
self.exec_lquery(query)
1316

1417
# execute impersonation query
1518
elif self.impersonate is not None:

pysqlrecon/modules/columns.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ def main(
3838
"SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS " \
3939
f"WHERE TABLE_NAME = '{table}' ORDER BY ORDINAL_POSITION;"
4040

41-
pysqlrecon.query_handler(query)
41+
pysqlrecon.query_handler(query, use_rpc_query=True)
4242
pysqlrecon.print_results(use_basic_tables)
4343

4444
pysqlrecon.disconnect()

pysqlrecon/modules/rows.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ def main(
3535
logger.info(f"Getting row count of table '{table}' in '{pysqlrecon.db}' on {pysqlrecon.target}")
3636

3737
query = f"use {pysqlrecon.db}; SELECT COUNT(*) as row_count FROM {table};"
38-
pysqlrecon.query_handler(query)
38+
pysqlrecon.query_handler(query, use_rpc_query=True)
3939
pysqlrecon.print_results(use_basic_tables)
4040

4141
pysqlrecon.disconnect()

pysqlrecon/modules/search.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,14 @@ def main(
3434
else:
3535
logger.info(f"Searching for columns containing '{keyword}' in '{pysqlrecon.db}' on {pysqlrecon.target}")
3636

37-
query = "SELECT table_name, column_name " \
37+
if pysqlrecon.link:
38+
query = "SELECT table_name, column_name " \
39+
f"FROM {pysqlrecon.db}.INFORMATION_SCHEMA.COLUMNS WHERE column_name LIKE '%{keyword}%';"
40+
else:
41+
query = "SELECT table_name, column_name " \
3842
f"FROM INFORMATION_SCHEMA.COLUMNS WHERE column_name LIKE '%{keyword}%';"
3943

40-
pysqlrecon.query_handler(query)
44+
pysqlrecon.query_handler(query, use_rpc_query=True)
4145
pysqlrecon.print_results(use_basic_tables)
4246

4347
pysqlrecon.disconnect()

0 commit comments

Comments
 (0)