2013-02-14 15:32:17 +04:00
#!/usr/bin/env python
2010-03-24 00:26:45 +03:00
"""
2014-01-13 21:24:49 +04:00
Copyright ( c ) 2006 - 2014 sqlmap developers ( http : / / sqlmap . org / )
2010-10-15 03:18:29 +04:00
See the file ' doc/COPYING ' for copying permission
2010-03-24 00:26:45 +03:00
"""
2013-06-16 14:35:20 +04:00
from lib . core . common import Backend
2010-12-10 13:54:17 +03:00
from lib . core . common import isDBMSVersionAtLeast
2010-03-24 00:26:45 +03:00
from plugins . generic . syntax import Syntax as GenericSyntax
class Syntax ( GenericSyntax ) :
def __init__ ( self ) :
GenericSyntax . __init__ ( self )
@staticmethod
2013-01-18 18:40:37 +04:00
def escape ( expression , quote = True ) :
2013-03-11 17:58:05 +04:00
"""
>> > Backend . setVersion ( ' 2.0 ' )
[ ' 2.0 ' ]
>> > Syntax . escape ( " SELECT ' abcdefgh ' FROM foobar " )
" SELECT ' abcdefgh ' FROM foobar "
>> > Backend . setVersion ( ' 2.1 ' )
[ ' 2.1 ' ]
>> > Syntax . escape ( " SELECT ' abcdefgh ' FROM foobar " )
' SELECT ASCII_CHAR(97)||ASCII_CHAR(98)||ASCII_CHAR(99)||ASCII_CHAR(100)||ASCII_CHAR(101)||ASCII_CHAR(102)||ASCII_CHAR(103)||ASCII_CHAR(104) FROM foobar '
"""
2013-01-20 16:45:58 +04:00
def escaper ( value ) :
2013-01-21 01:16:34 +04:00
return " || " . join ( " ASCII_CHAR( %d ) " % ord ( _ ) for _ in value )
2010-03-24 00:26:45 +03:00
2013-01-21 01:16:34 +04:00
retVal = expression
2013-01-24 18:12:52 +04:00
if isDBMSVersionAtLeast ( " 2.1 " ) :
2013-01-21 01:16:34 +04:00
retVal = Syntax . _escape ( expression , quote , escaper )
2013-01-21 01:47:26 +04:00
return retVal