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

Skip to content

Commit dc11ae0

Browse files
committed
update
1 parent 35f3560 commit dc11ae0

5 files changed

Lines changed: 71 additions & 10 deletions

File tree

lib/controller/controller.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ def start():
9292
"""
9393

9494
if not conf.start:
95-
return
95+
return False
9696

9797
if conf.optimize:
9898
conf.useCommonPrediction = conf.useNullConnection = conf.keepAlive = True
@@ -101,8 +101,7 @@ def start():
101101
initTargetEnv()
102102
setupTargetEnv()
103103
action()
104-
105-
return
104+
return True
106105

107106
if conf.url:
108107
kb.targetUrls.add(( conf.url, conf.method, conf.data, conf.cookie ))
@@ -111,6 +110,7 @@ def start():
111110
errMsg = "you did not edit the configuration file properly, set "
112111
errMsg += "the target url, list of targets or google dork"
113112
logger.error(errMsg)
113+
return False
114114

115115
if kb.targetUrls and len(kb.targetUrls) > 1:
116116
infoMsg = "sqlmap got a total of %d targets" % len(kb.targetUrls)
@@ -287,7 +287,9 @@ def start():
287287
logger.error(e)
288288
else:
289289
logger.error(e)
290-
return
290+
return False
291291

292292
if conf.loggedToOut:
293293
logger.info("Fetched data logged to text files under '%s'" % conf.outputPath)
294+
295+
return True

lib/core/dump.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,9 @@ def setOutputFile(self):
6666
self.__outputFile = "%s%slog" % (conf.outputPath, os.sep)
6767
self.__outputFP = codecs.open(self.__outputFile, "ab", conf.dataEncoding)
6868

69+
def getOutputFile(self):
70+
return self.__outputFile
71+
6972
def string(self, header, data, sort=True):
7073
if isinstance(data, (list, tuple, set)):
7174
self.lister(header, data, sort)

lib/core/testing.py

Lines changed: 56 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
from lib.core.data import logger
4040
from lib.core.data import paths
4141
from lib.core.option import init
42+
from lib.core.option import __setVerbosity
4243
from lib.parse.cmdline import cmdLineParser
4344

4445
def smokeTest():
@@ -80,16 +81,18 @@ def smokeTest():
8081

8182
dataToStdout("\r%s\r" % (" "*(getConsoleWidth()-1)))
8283
if retVal:
83-
logger.info("smoke test result: passed")
84+
logger.info("smoke test final result: passed")
8485
else:
85-
logger.info("smoke test result: failed")
86+
logger.info("smoke test final result: failed")
8687

8788
return retVal
8889

8990
def liveTest():
9091
"""
9192
This will run the test of a program against the live testing environment
9293
"""
94+
retVal = True
95+
count = 0
9396
vars = {}
9497
xfile = codecs.open(paths.LIVE_TESTS_XML, 'r', conf.dataEncoding)
9598
livetests = minidom.parse(xfile).documentElement
@@ -106,6 +109,7 @@ def liveTest():
106109
log = []
107110
session = []
108111
switches = {}
112+
count += 1
109113

110114
if case.getElementsByTagName("switches"):
111115
for child in case.getElementsByTagName("switches")[0].childNodes:
@@ -122,23 +126,69 @@ def liveTest():
122126
if item.hasAttribute("value"):
123127
session.append(replaceVars(item.getAttribute("value"), vars))
124128

125-
runCase(switches, log, session)
129+
result = runCase(switches, log, session)
130+
if not result:
131+
errMsg = "live test failed at case #%d" % count
132+
logger.error(errMsg)
133+
retVal &= result
134+
135+
if retVal:
136+
logger.info("live test final result: passed")
137+
else:
138+
logger.info("live test final result: failed")
139+
140+
return retVal
126141

127142
def initCase():
128143
paths.SQLMAP_OUTPUT_PATH = tempfile.mkdtemp()
129144
paths.SQLMAP_DUMP_PATH = os.path.join(paths.SQLMAP_OUTPUT_PATH, "%s", "dump")
130145
paths.SQLMAP_FILES_PATH = os.path.join(paths.SQLMAP_OUTPUT_PATH, "%s", "files")
131146
cmdLineOptions = cmdLineParser()
132147
cmdLineOptions.liveTest = cmdLineOptions.smokeTest = False
148+
cmdLineOptions.verbose = 0
133149
init(cmdLineOptions)
134-
conf.suppressOutput = True
135-
logger.setLevel(logging.CRITICAL)
150+
__setVerbosity()
151+
152+
def cleanCase():
153+
#remove dir: paths.SQLMAP_OUTPUT_PATH
154+
paths.SQLMAP_OUTPUT_PATH = os.path.join(paths.SQLMAP_ROOT_PATH, "output")
155+
paths.SQLMAP_DUMP_PATH = os.path.join(paths.SQLMAP_OUTPUT_PATH, "%s", "dump")
156+
paths.SQLMAP_FILES_PATH = os.path.join(paths.SQLMAP_OUTPUT_PATH, "%s", "files")
157+
conf.verbose = 1
158+
__setVerbosity()
136159

137160
def runCase(switches, log=None, session=None):
161+
retVal = True
138162
initCase()
139163
for key, value in switches.items():
140164
conf[key] = value
141-
start()
165+
166+
result = start()
167+
if result == False: #if None ignore
168+
retVal = False
169+
170+
if session and retVal:
171+
file = open(conf.sessionFile, 'r')
172+
content = file.read()
173+
file.close()
174+
for item in session:
175+
#if not re.search(item, content):
176+
if content.find(item) < 0:
177+
retVal = False
178+
break
179+
180+
if log and retVal:
181+
file = open(conf.dumper.getOutputFile(), 'r')
182+
content = file.read()
183+
file.close()
184+
for item in log:
185+
#if not re.search(item, content):
186+
if content.find(item) < 0:
187+
retVal = False
188+
break
189+
190+
cleanCase()
191+
return retVal
142192

143193
def replaceVars(item, vars):
144194
retVal = item

lib/core/xmldump.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -502,6 +502,9 @@ def setOutputFile(self):
502502
except IOError, e:
503503
raise sqlmapFilePathException("Wrong filename provided for saving the xml file: %s" % conf.xmlFile)
504504

505+
def getOutputFile(self):
506+
return self.__outputFile
507+
505508
def finish(self, resultStatus, resultMsg=""):
506509
'''
507510
Finishes the dumper operation:

xml/livetests.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@
1010
<url value="http://${host}/sqlmap/mysql/get_int.php?id=1"/>
1111
<getBanner value="True"/>
1212
</switches>
13+
<log>
14+
<item value="5.1.41-3~bpo50+1"/>
15+
</log>
1316
</case>
1417
<!-- Oracle
1518
<case>

0 commit comments

Comments
 (0)