mirror of
https://github.com/sqlmapproject/sqlmap.git
synced 2025-02-13 10:00:36 +03:00
Fixed resume functionality on --read-file when using MySQL's LOAD_FILE() via blind SQL injection.
This commit is contained in:
parent
9c620da0a5
commit
d55175a340
|
@ -22,8 +22,6 @@ with sqlmap; if not, write to the Free Software Foundation, Inc., 51
|
||||||
Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
import re
|
import re
|
||||||
|
|
||||||
from lib.core.common import dataToSessionFile
|
from lib.core.common import dataToSessionFile
|
||||||
|
@ -34,7 +32,6 @@ from lib.core.data import queries
|
||||||
from lib.core.unescaper import unescaper
|
from lib.core.unescaper import unescaper
|
||||||
from lib.techniques.blind.inference import bisection
|
from lib.techniques.blind.inference import bisection
|
||||||
|
|
||||||
|
|
||||||
def queryOutputLength(expression, payload):
|
def queryOutputLength(expression, payload):
|
||||||
"""
|
"""
|
||||||
Returns the query output length.
|
Returns the query output length.
|
||||||
|
@ -45,14 +42,17 @@ def queryOutputLength(expression, payload):
|
||||||
select = re.search("\ASELECT\s+", expression, re.I)
|
select = re.search("\ASELECT\s+", expression, re.I)
|
||||||
selectTopExpr = re.search("\ASELECT\s+TOP\s+[\d]+\s+(.+?)\s+FROM", expression, re.I)
|
selectTopExpr = re.search("\ASELECT\s+TOP\s+[\d]+\s+(.+?)\s+FROM", expression, re.I)
|
||||||
selectDistinctExpr = re.search("\ASELECT\s+DISTINCT\((.+?)\)\s+FROM", expression, re.I)
|
selectDistinctExpr = re.search("\ASELECT\s+DISTINCT\((.+?)\)\s+FROM", expression, re.I)
|
||||||
selectExpr = re.search("\ASELECT\s+(.+?)\s+FROM", expression, re.I)
|
selectFromExpr = re.search("\ASELECT\s+(.+?)\s+FROM", expression, re.I)
|
||||||
|
selectExpr = re.search("\ASELECT\s+(.+)$", expression, re.I)
|
||||||
miscExpr = re.search("\A(.+)", expression, re.I)
|
miscExpr = re.search("\A(.+)", expression, re.I)
|
||||||
|
|
||||||
if selectTopExpr or selectDistinctExpr or selectExpr:
|
if selectTopExpr or selectDistinctExpr or selectFromExpr or selectExpr:
|
||||||
if selectTopExpr:
|
if selectTopExpr:
|
||||||
regExpr = selectTopExpr.groups()[0]
|
regExpr = selectTopExpr.groups()[0]
|
||||||
elif selectDistinctExpr:
|
elif selectDistinctExpr:
|
||||||
regExpr = selectDistinctExpr.groups()[0]
|
regExpr = selectDistinctExpr.groups()[0]
|
||||||
|
elif selectFromExpr:
|
||||||
|
regExpr = selectFromExpr.groups()[0]
|
||||||
elif selectExpr:
|
elif selectExpr:
|
||||||
regExpr = selectExpr.groups()[0]
|
regExpr = selectExpr.groups()[0]
|
||||||
elif miscExpr:
|
elif miscExpr:
|
||||||
|
@ -84,7 +84,6 @@ def queryOutputLength(expression, payload):
|
||||||
|
|
||||||
return count, length, regExpr
|
return count, length, regExpr
|
||||||
|
|
||||||
|
|
||||||
def resume(expression, payload):
|
def resume(expression, payload):
|
||||||
"""
|
"""
|
||||||
This function can be called to resume part or entire output of a
|
This function can be called to resume part or entire output of a
|
||||||
|
|
Loading…
Reference in New Issue
Block a user