mirror of
https://github.com/sqlmapproject/sqlmap.git
synced 2024-11-25 11:03:47 +03:00
minor code refactoring and implemented issue #95
This commit is contained in:
parent
9cb1c4c0d9
commit
b0ab837832
|
@ -483,14 +483,6 @@ class Entries:
|
||||||
logger.info(infoMsg)
|
logger.info(infoMsg)
|
||||||
|
|
||||||
def dumpFoundColumn(self, dbs, foundCols, colConsider):
|
def dumpFoundColumn(self, dbs, foundCols, colConsider):
|
||||||
if not dbs:
|
|
||||||
warnMsg = "no databases have tables containing any of the "
|
|
||||||
warnMsg += "provided columns"
|
|
||||||
logger.warn(warnMsg)
|
|
||||||
return
|
|
||||||
|
|
||||||
conf.dumper.dbColumns(foundCols, colConsider, dbs)
|
|
||||||
|
|
||||||
message = "do you want to dump entries? [Y/n] "
|
message = "do you want to dump entries? [Y/n] "
|
||||||
output = readInput(message, default="Y")
|
output = readInput(message, default="Y")
|
||||||
|
|
||||||
|
@ -552,3 +544,64 @@ class Entries:
|
||||||
|
|
||||||
if data:
|
if data:
|
||||||
conf.dumper.dbTableValues(data)
|
conf.dumper.dbTableValues(data)
|
||||||
|
|
||||||
|
def dumpFoundTables(self, tables):
|
||||||
|
print "tables:", tables
|
||||||
|
|
||||||
|
message = "do you want to dump tables' entries? [Y/n] "
|
||||||
|
output = readInput(message, default="Y")
|
||||||
|
|
||||||
|
if output and output[0].lower() != "y":
|
||||||
|
return
|
||||||
|
|
||||||
|
dumpFromDbs = []
|
||||||
|
message = "which database(s)?\n[a]ll (default)\n"
|
||||||
|
|
||||||
|
for db, tablesList in tables.items():
|
||||||
|
if tablesList:
|
||||||
|
message += "[%s]\n" % db
|
||||||
|
|
||||||
|
message += "[q]uit"
|
||||||
|
test = readInput(message, default="a")
|
||||||
|
|
||||||
|
if not test or test.lower() == "a":
|
||||||
|
dumpFromDbs = tables.keys()
|
||||||
|
elif test.lower() == "q":
|
||||||
|
return
|
||||||
|
else:
|
||||||
|
dumpFromDbs = test.replace(" ", "").split(",")
|
||||||
|
|
||||||
|
for db, tablesList in tables.items():
|
||||||
|
if db not in dumpFromDbs or not tablesList:
|
||||||
|
continue
|
||||||
|
|
||||||
|
conf.db = db
|
||||||
|
dumpFromTbls = []
|
||||||
|
message = "which table(s) of database '%s'?\n" % db
|
||||||
|
message += "[a]ll (default)\n"
|
||||||
|
|
||||||
|
for tbl in tablesList:
|
||||||
|
message += "[%s]\n" % tbl
|
||||||
|
|
||||||
|
message += "[s]kip\n"
|
||||||
|
message += "[q]uit"
|
||||||
|
test = readInput(message, default="a")
|
||||||
|
|
||||||
|
if not test or test.lower() == "a":
|
||||||
|
dumpFromTbls = tablesList
|
||||||
|
elif test.lower() == "s":
|
||||||
|
continue
|
||||||
|
elif test.lower() == "q":
|
||||||
|
return
|
||||||
|
else:
|
||||||
|
dumpFromTbls = test.replace(" ", "").split(",")
|
||||||
|
|
||||||
|
for table in dumpFromTbls:
|
||||||
|
conf.tbl = table
|
||||||
|
kb.data.cachedColumns = {}
|
||||||
|
kb.data.dumpedTable = {}
|
||||||
|
|
||||||
|
data = self.dumpTable()
|
||||||
|
|
||||||
|
if data:
|
||||||
|
conf.dumper.dbTableValues(data)
|
||||||
|
|
|
@ -282,7 +282,13 @@ class Search:
|
||||||
foundTbl = safeSQLIdentificatorNaming(foundTbl, True)
|
foundTbl = safeSQLIdentificatorNaming(foundTbl, True)
|
||||||
foundTbls[db].append(foundTbl)
|
foundTbls[db].append(foundTbl)
|
||||||
|
|
||||||
return foundTbls
|
if not foundTbls:
|
||||||
|
warnMsg = "no databases contain any of the provided tables"
|
||||||
|
logger.warn(warnMsg)
|
||||||
|
return
|
||||||
|
|
||||||
|
conf.dumper.dbTables(foundTbls)
|
||||||
|
self.dumpFoundTables(foundTbls)
|
||||||
|
|
||||||
def searchColumn(self):
|
def searchColumn(self):
|
||||||
bruteForce = False
|
bruteForce = False
|
||||||
|
@ -519,6 +525,13 @@ class Search:
|
||||||
else:
|
else:
|
||||||
foundCols[column][db] = [tbl]
|
foundCols[column][db] = [tbl]
|
||||||
|
|
||||||
|
if not foundCols:
|
||||||
|
warnMsg = "no databases have tables containing any of the "
|
||||||
|
warnMsg += "provided columns"
|
||||||
|
logger.warn(warnMsg)
|
||||||
|
return
|
||||||
|
|
||||||
|
conf.dumper.dbColumns(foundCols, colConsider, dbs)
|
||||||
self.dumpFoundColumn(dbs, foundCols, colConsider)
|
self.dumpFoundColumn(dbs, foundCols, colConsider)
|
||||||
|
|
||||||
def search(self):
|
def search(self):
|
||||||
|
@ -531,12 +544,12 @@ class Search:
|
||||||
self.searchColumn()
|
self.searchColumn()
|
||||||
|
|
||||||
elif conf.tbl:
|
elif conf.tbl:
|
||||||
conf.dumper.dbTables(self.searchTable())
|
self.searchTable()
|
||||||
|
|
||||||
elif conf.db:
|
elif conf.db:
|
||||||
conf.dumper.lister("found databases", self.searchDb())
|
conf.dumper.lister("found databases", self.searchDb())
|
||||||
|
|
||||||
else:
|
else:
|
||||||
errMsg = "missing parameter, provide -D, -T or -C together "
|
errMsg = "missing parameter, provide -D, -T or -C along "
|
||||||
errMsg += "with --search"
|
errMsg += "with --search"
|
||||||
raise sqlmapMissingMandatoryOptionException, errMsg
|
raise sqlmapMissingMandatoryOptionException, errMsg
|
||||||
|
|
Loading…
Reference in New Issue
Block a user