Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 58d54b6

Browse files
committed
added new option --flush-session
1 parent a839566 commit 58d54b6

5 files changed

Lines changed: 52 additions & 37 deletions

File tree

lib/core/optiondict.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,7 @@
139139

140140
"Miscellaneous": {
141141
"sessionFile": "string",
142+
"flushSession": "boolean",
142143
"eta": "boolean",
143144
"googlePage": "integer",
144145
"updateAll": "boolean",

lib/core/target.py

Lines changed: 44 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -117,42 +117,50 @@ def __setOutputResume():
117117
logger.info("using '%s' as session file" % conf.sessionFile)
118118

119119
if os.path.exists(conf.sessionFile):
120-
readSessionFP = open(conf.sessionFile, "r")
121-
lines = readSessionFP.readlines()
122-
123-
for line in lines:
124-
if line.count("][") == 4:
125-
line = line.split("][")
126-
127-
if len(line) != 5:
128-
continue
129-
130-
url, _, _, expression, value = line
131-
132-
if not value:
133-
continue
134-
135-
if url[0] == "[":
136-
url = url[1:]
137-
138-
if value[-1] == "\n":
139-
value = value[:-1]
140-
141-
if url != conf.url:
142-
continue
143-
144-
if url not in kb.resumedQueries.keys():
145-
kb.resumedQueries[url] = {}
146-
kb.resumedQueries[url][expression] = value
147-
148-
resumeConfKb(expression, url, value)
149-
150-
if expression not in kb.resumedQueries[url].keys():
151-
kb.resumedQueries[url][expression] = value
152-
elif len(value) >= len(kb.resumedQueries[url][expression]):
153-
kb.resumedQueries[url][expression] = value
154-
155-
readSessionFP.close()
120+
if not conf.flushSession:
121+
readSessionFP = open(conf.sessionFile, "r")
122+
lines = readSessionFP.readlines()
123+
124+
for line in lines:
125+
if line.count("][") == 4:
126+
line = line.split("][")
127+
128+
if len(line) != 5:
129+
continue
130+
131+
url, _, _, expression, value = line
132+
133+
if not value:
134+
continue
135+
136+
if url[0] == "[":
137+
url = url[1:]
138+
139+
if value[-1] == "\n":
140+
value = value[:-1]
141+
142+
if url != conf.url:
143+
continue
144+
145+
if url not in kb.resumedQueries.keys():
146+
kb.resumedQueries[url] = {}
147+
kb.resumedQueries[url][expression] = value
148+
149+
resumeConfKb(expression, url, value)
150+
151+
if expression not in kb.resumedQueries[url].keys():
152+
kb.resumedQueries[url][expression] = value
153+
elif len(value) >= len(kb.resumedQueries[url][expression]):
154+
kb.resumedQueries[url][expression] = value
155+
156+
readSessionFP.close()
157+
else:
158+
try:
159+
os.remove(conf.sessionFile)
160+
logger.info("flushing session file")
161+
except OSError, msg:
162+
errMsg = "unable to flush the session file (%s)" % msg
163+
raise sqlmapFilePathException, errMsg
156164

157165
try:
158166
conf.sessionFP = open(conf.sessionFile, "a")

lib/parse/cmdline.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -397,6 +397,9 @@ def cmdLineParser():
397397
help="Save and resume all data retrieved "
398398
"on a session file")
399399

400+
miscellaneous.add_option("--flush-session", dest="flushSession", action="store_true",
401+
help="Flush session file for current target")
402+
400403
miscellaneous.add_option("--eta", dest="eta", action="store_true",
401404
help="Display for each output the "
402405
"estimated time of arrival")

plugins/generic/enumeration.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,6 @@ def getBanner(self):
103103

104104
infoMsg = "fetching banner"
105105
logger.info(infoMsg)
106-
107106
if not kb.data.banner:
108107
if conf.unionUse or conf.unionTest:
109108
dumper.string("valid union", unionTest())

sqlmap.conf

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -398,6 +398,10 @@ regType =
398398
# Save and resume all data retrieved on a session file.
399399
sessionFile =
400400

401+
402+
# Flush session file for current target.
403+
flushSession = False
404+
401405
# Retrieve each query output length and calculate the estimated time of
402406
# arrival in real time.
403407
# Valid: True or False

0 commit comments

Comments
 (0)