mirror of
https://github.com/sqlmapproject/sqlmap.git
synced 2025-12-06 12:41:30 +00:00
Refactoring DBMS string escaping functions
This commit is contained in:
@@ -6,10 +6,8 @@ See the file 'doc/COPYING' for copying permission
|
||||
"""
|
||||
|
||||
import binascii
|
||||
import re
|
||||
|
||||
from lib.core.convert import utf8encode
|
||||
from lib.core.exception import SqlmapSyntaxException
|
||||
from plugins.generic.syntax import Syntax as GenericSyntax
|
||||
|
||||
class Syntax(GenericSyntax):
|
||||
@@ -18,14 +16,12 @@ class Syntax(GenericSyntax):
|
||||
|
||||
@staticmethod
|
||||
def escape(expression, quote=True):
|
||||
if quote:
|
||||
unescaped = expression
|
||||
for item in re.findall(r"'[^']+'", expression, re.S):
|
||||
try:
|
||||
unescaped = unescaped.replace(item, "0x%s" % binascii.hexlify(item.strip("'")))
|
||||
except UnicodeEncodeError:
|
||||
unescaped = unescaped.replace(item, "CONVERT(0x%s USING utf8)" % "".join("%.2x" % ord(_) for _ in utf8encode(item.strip("'"))))
|
||||
else:
|
||||
unescaped = "0x%s" % binascii.hexlify(expression)
|
||||
def escaper(value):
|
||||
retVal = None
|
||||
try:
|
||||
retVal = "0x%s" % binascii.hexlify(value.strip("'"))
|
||||
except UnicodeEncodeError:
|
||||
retVal = "CONVERT(0x%s USING utf8)" % "".join("%.2x" % ord(_) for _ in utf8encode(value.strip("'")))
|
||||
return retVal
|
||||
|
||||
return unescaped
|
||||
return Syntax._escape(expression, quote, escaper)
|
||||
|
||||
Reference in New Issue
Block a user