mirror of
https://github.com/sqlmapproject/sqlmap.git
synced 2024-11-22 01:26:42 +03:00
Minor bug fix for Microsoft Access case expressions (like --common-tables) in UNION query SQL injection
This commit is contained in:
parent
02bfd05b20
commit
b5dd4d4a63
|
@ -82,7 +82,7 @@ Pierre Chifflier <pollux@debian.org> and Mark Hymers <ftpmaster@debian.org>
|
|||
Debian project repository
|
||||
|
||||
Chris Clements <cclements@flatearth.net>
|
||||
for reporting a minor bug
|
||||
for reporting a couple of bugs
|
||||
|
||||
Andreas Constantinides <megahz@megahz.org>
|
||||
for reporting a minor bug
|
||||
|
|
|
@ -283,7 +283,7 @@ class Agent:
|
|||
if Backend.isDbms(DBMS.SQLITE):
|
||||
return field
|
||||
|
||||
if field.startswith("(CASE"):
|
||||
if field.startswith("(CASE") or field.startswith("(IIF"):
|
||||
nulledCastedField = field
|
||||
else:
|
||||
nulledCastedField = (queries[Backend.getIdentifiedDbms()].cast.query % field) if not conf.noCast else field
|
||||
|
@ -327,7 +327,7 @@ class Agent:
|
|||
if not Backend.getDbms():
|
||||
return fields
|
||||
|
||||
if fields.startswith("(CASE") or fields.startswith("SUBSTR") or fields.startswith("MID("):
|
||||
if fields.startswith("(CASE") or fields.startswith("(IIF") or fields.startswith("SUBSTR") or fields.startswith("MID("):
|
||||
nulledCastedConcatFields = fields
|
||||
else:
|
||||
fields = fields.replace(", ", ",")
|
||||
|
@ -598,7 +598,7 @@ class Agent:
|
|||
inbandQuery += query[conditionIndex:]
|
||||
|
||||
if Backend.getIdentifiedDbms() in FROM_TABLE:
|
||||
if " FROM " not in inbandQuery or "(CASE " in inbandQuery:
|
||||
if " FROM " not in inbandQuery or "(CASE " in inbandQuery or "(IIF" in inbandQuery:
|
||||
inbandQuery += FROM_TABLE[Backend.getIdentifiedDbms()]
|
||||
|
||||
if intoRegExp:
|
||||
|
@ -748,7 +748,7 @@ class Agent:
|
|||
if Backend.getIdentifiedDbms() is not None and hasattr(queries[Backend.getIdentifiedDbms()], "case"):
|
||||
caseExpression = queries[Backend.getIdentifiedDbms()].case.query % expression
|
||||
|
||||
if Backend.getIdentifiedDbms() in FROM_TABLE and not caseExpression.upper().endswith(FROM_TABLE[Backend.getIdentifiedDbms()]):
|
||||
if "(IIF" not in caseExpression and Backend.getIdentifiedDbms() in FROM_TABLE and not caseExpression.upper().endswith(FROM_TABLE[Backend.getIdentifiedDbms()]):
|
||||
caseExpression += FROM_TABLE[Backend.getIdentifiedDbms()]
|
||||
|
||||
return caseExpression
|
||||
|
|
|
@ -356,7 +356,7 @@
|
|||
<comment query="%00"/>
|
||||
<timedelay/>
|
||||
<substring query="MID((%s),%d,%d)"/>
|
||||
<case query="IIF(%s,1,0)"/>
|
||||
<case query="SELECT (IIF(%s,1,0))"/>
|
||||
<banner/>
|
||||
<!--CURRENTUSER() is not available outside the MS Access query tool itself-->
|
||||
<current_user/>
|
||||
|
|
Loading…
Reference in New Issue
Block a user