Skip to content

Commit

Permalink
SQLMap tamper scripts
Browse files Browse the repository at this point in the history
  • Loading branch information
kazet committed Feb 19, 2024
1 parent b4b4faa commit b38ca1c
Show file tree
Hide file tree
Showing 3 changed files with 48 additions and 24 deletions.
15 changes: 15 additions & 0 deletions extra_modules_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,3 +41,18 @@ class ExtraModulesConfig:
cast=int,
default=50,
)

SQLMAP_TAMPER_SCRIPTS = decouple.config(
"SQLMAP_TAMPER_SCRIPTS",
cast=decouple.Csv(str),
default=",".join(
[
"base64encode",
"chardoubleencode",
"charencode",
"randomcase",
"space2randomblank",
"/opt/karton_sqlmap/tamper/tamper_double_quotes.py",
]
),
)
4 changes: 4 additions & 0 deletions karton_sqlmap/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,8 @@ WORKDIR /opt/
COPY extra_modules_config.py /opt/
COPY karton_sqlmap/karton_sqlmap.py /opt/artemis/modules/
COPY karton_sqlmap/test_sqlmap.py /opt/
COPY karton_sqlmap/tamper/ /opt/karton_sqlmap/tamper/

RUN touch /opt/karton_sqlmap/__init__.py

COPY test /opt/test
53 changes: 29 additions & 24 deletions karton_sqlmap/karton_sqlmap.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,32 +54,37 @@ def _run() -> Optional[str]:
else:
additional_configuration = []

cmd = (
[
"sqlmap",
"--delay",
str(1.0 / Config.Limits.REQUESTS_PER_SECOND) if Config.Limits.REQUESTS_PER_SECOND else "0",
"-u",
url,
"--batch",
"--technique",
"BU",
"--skip-waf",
"--skip-heuristics",
"-v",
"0",
]
+ arguments
+ additional_configuration
)
data = subprocess.check_output(cmd)
for tamper_script in [None] + ExtraModulesConfig.SQLMAP_TAMPER_SCRIPTS:
cmd = (
[
"sqlmap",
"--delay",
str(1.0 / Config.Limits.REQUESTS_PER_SECOND) if Config.Limits.REQUESTS_PER_SECOND else "0",
"-u",
url,
"--batch",
"--technique",
"BU",
"--skip-waf",
"--skip-heuristics",
"-v",
"0",
]
+ arguments
+ additional_configuration
)

if tamper_script:
cmd.append(f"--tamper={tamper_script}")

data = subprocess.check_output(cmd)

data_str = data.decode("ascii", errors="ignore")
data_str = data.decode("ascii", errors="ignore")

for line in data_str.split("\n"):
match_result = re.compile(f"^{re.escape(find_in_output)}[^:]*: '(.*)'$").fullmatch(line)
if match_result:
return match_result.group(1)
for line in data_str.split("\n"):
match_result = re.compile(f"^{re.escape(find_in_output)}[^:]*: '(.*)'$").fullmatch(line)
if match_result:
return match_result.group(1)
return None

if timeout_seconds:
Expand Down

0 comments on commit b38ca1c

Please sign in to comment.