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

Skip to content

Commit bbd2adb

Browse files
committed
improvements to --live-test and added --stop-fail switch
1 parent 064d443 commit bbd2adb

3 files changed

Lines changed: 42 additions & 27 deletions

File tree

lib/core/testing.py

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@
2626
from lib.core.optiondict import optDict
2727
from lib.parse.cmdline import cmdLineParser
2828

29+
failedItem = None
30+
2931
def smokeTest():
3032
"""
3133
This will run the basic smoke testing of a program
@@ -95,6 +97,8 @@ def liveTest():
9597
"""
9698
This will run the test of a program against the live testing environment
9799
"""
100+
global failedItem
101+
98102
retVal = True
99103
count = 0
100104
global_ = {}
@@ -147,8 +151,10 @@ def liveTest():
147151
if result:
148152
logger.info("test passed")
149153
else:
150-
logger.error("test failed")
154+
logger.error("test failed at parsing item '%s'" % failedItem)
151155
beep()
156+
if conf.stopFail is True:
157+
return retVal
152158

153159
retVal &= result
154160

@@ -162,6 +168,9 @@ def liveTest():
162168
return retVal
163169

164170
def initCase(switches=None):
171+
global failedItem
172+
failedItem = None
173+
165174
paths.SQLMAP_OUTPUT_PATH = tempfile.mkdtemp(prefix="sqlmaptest-")
166175
paths.SQLMAP_DUMP_PATH = os.path.join(paths.SQLMAP_OUTPUT_PATH, "%s", "dump")
167176
paths.SQLMAP_FILES_PATH = os.path.join(paths.SQLMAP_OUTPUT_PATH, "%s", "files")
@@ -187,8 +196,9 @@ def cleanCase():
187196

188197
def runCase(switches=None, parse=None):
189198
retVal = True
190-
initCase(switches)
199+
global failedItem
191200

201+
initCase(switches)
192202
result = start()
193203

194204
if result == False: # if None, ignore
@@ -203,9 +213,11 @@ def runCase(switches=None, parse=None):
203213
if item.startswith("r'") and item.endswith("'"):
204214
if not re.search(item[2:-1], content, re.DOTALL):
205215
retVal = False
216+
failedItem = item
206217
break
207218
elif content.find(item) < 0:
208219
retVal = False
220+
failedItem = item
209221
break
210222

211223
cleanCase()

lib/parse/cmdline.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -679,6 +679,9 @@ def cmdLineParser():
679679
parser.add_option("--live-test", dest="liveTest", action="store_true",
680680
help=SUPPRESS_HELP)
681681

682+
parser.add_option("--stop-fail", dest="stopFail", action="store_true",
683+
help=SUPPRESS_HELP)
684+
682685
parser.add_option("--run-case", dest="runCase", help=SUPPRESS_HELP)
683686

684687
parser.add_option("--restapi", dest="restApi", action="store_true",

xml/livetests.xml

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -49,14 +49,14 @@
4949
<dumpTable value="True"/>
5050
</switches>
5151
<parse>
52-
<item value="current user is DBA: 'True'"/>
53-
<item value="banner: '5.1.41-3~bpo50+1'"/>
52+
<item value="current user is DBA: True"/>
53+
<item value="banner: '5.1.63-0+squeeze2'"/>
5454
<item value="current user: 'root@localhost'"/>
5555
<item value="current database: 'testdb'"/>
5656
<item value="r'information_schema.+mysql.+owasp10.+testdb'"/>
5757
<item value="r'1 table.+users'"/>
5858
<item value="r'3 columns.+surname.+varchar\(1000\)'"/>
59-
<item value="r'4 entries.+nameisnull.+'"/>
59+
<item value="r'5 entries.+nameisnull.+'"/>
6060
</parse>
6161
</case>
6262
<case name="MySQL (--technique=U --is-dba --banner --current-user --current-db --dbs --tables -D testdb -T users --columns --dump)">
@@ -75,14 +75,14 @@
7575
<dumpTable value="True"/>
7676
</switches>
7777
<parse>
78-
<item value="current user is DBA: 'True'"/>
79-
<item value="banner: '5.1.41-3~bpo50+1'"/>
78+
<item value="current user is DBA: True"/>
79+
<item value="banner: '5.1.63-0+squeeze1'"/>
8080
<item value="current user: 'root@localhost'"/>
8181
<item value="current database: 'testdb'"/>
8282
<item value="r'information_schema.+mysql.+owasp10.+testdb'"/>
8383
<item value="r'1 table.+users'"/>
8484
<item value="r'3 columns.+surname.+varchar\(1000\)'"/>
85-
<item value="r'4 entries.+nameisnull.+'"/>
85+
<item value="r'5 entries.+nameisnull.+'"/>
8686
</parse>
8787
</case>
8888
<case name="MySQL partial union (--technique=U --is-dba --banner --current-user --current-db --dbs --tables -D testdb -T users --columns --dump)">
@@ -101,14 +101,14 @@
101101
<dumpTable value="True"/>
102102
</switches>
103103
<parse>
104-
<item value="current user is DBA: 'True'"/>
105-
<item value="banner: '5.1.41-3~bpo50+1'"/>
104+
<item value="current user is DBA: True"/>
105+
<item value="banner: '5.1.63-0+squeeze1'"/>
106106
<item value="current user: 'root@localhost'"/>
107107
<item value="current database: 'testdb'"/>
108108
<item value="r'information_schema.+mysql.+owasp10.+testdb'"/>
109109
<item value="r'1 table.+users'"/>
110110
<item value="r'3 columns.+surname.+varchar\(1000\)'"/>
111-
<item value="r'4 entries.+nameisnull.+'"/>
111+
<item value="r'5 entries.+nameisnull.+'"/>
112112
</parse>
113113
</case>
114114
<case name="Postgres (--technique=B --is-dba --banner --current-user --current-db --dbs --tables -D testdb -T users --columns --dump --threads=4)">
@@ -128,7 +128,7 @@
128128
<threads value="4"/>
129129
</switches>
130130
<parse>
131-
<item value="current user is DBA: 'True'"/>
131+
<item value="current user is DBA: True"/>
132132
<item value="PostgreSQL 8.3.9 on i486-pc-linux-gnu, compiled by GCC gcc-4.3.real (Debian 4.3.2-1.1) 4.3.2"/>
133133
<item value="current user: 'testuser'"/>
134134
<item value="current database: 'testdb'"/>
@@ -154,7 +154,7 @@
154154
<dumpTable value="True"/>
155155
</switches>
156156
<parse>
157-
<item value="current user is DBA: 'True'"/>
157+
<item value="current user is DBA: True"/>
158158
<item value="PostgreSQL 8.3.9 on i486-pc-linux-gnu, compiled by GCC gcc-4.3.real (Debian 4.3.2-1.1) 4.3.2"/>
159159
<item value="current user: 'testuser'"/>
160160
<item value="current database: 'testdb'"/>
@@ -180,7 +180,7 @@
180180
<dumpTable value="True"/>
181181
</switches>
182182
<parse>
183-
<item value="current user is DBA: 'True'"/>
183+
<item value="current user is DBA: True"/>
184184
<item value="PostgreSQL 8.3.9 on i486-pc-linux-gnu, compiled by GCC gcc-4.3.real (Debian 4.3.2-1.1) 4.3.2"/>
185185
<item value="current user: 'testuser'"/>
186186
<item value="current database: 'testdb'"/>
@@ -206,7 +206,7 @@
206206
<dumpTable value="True"/>
207207
</switches>
208208
<parse>
209-
<item value="current user is DBA: 'True'"/>
209+
<item value="current user is DBA: True"/>
210210
<item value="PostgreSQL 8.3.9 on i486-pc-linux-gnu, compiled by GCC gcc-4.3.real (Debian 4.3.2-1.1) 4.3.2"/>
211211
<item value="current user: 'testuser'"/>
212212
<item value="current database: 'testdb'"/>
@@ -233,7 +233,7 @@
233233
<threads value="4"/>
234234
</switches>
235235
<parse>
236-
<item value="current user is DBA: 'True'"/>
236+
<item value="current user is DBA: True"/>
237237
<item value="banner: 'Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod'"/>
238238
<item value="current user: 'SYS'"/>
239239
<item value="'TESTDB.REGRESS.RDBMS.DEV.US.ORACLE.COM'"/>
@@ -259,7 +259,7 @@
259259
<dumpTable value="True"/>
260260
</switches>
261261
<parse>
262-
<item value="current user is DBA: 'True'"/>
262+
<item value="current user is DBA: True"/>
263263
<item value="banner: 'Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod'"/>
264264
<item value="current user: 'SYS'"/>
265265
<item value="'TESTDB.REGRESS.RDBMS.DEV.US.ORACLE.COM'"/>
@@ -285,7 +285,7 @@
285285
<dumpTable value="True"/>
286286
</switches>
287287
<parse>
288-
<item value="current user is DBA: 'True'"/>
288+
<item value="current user is DBA: True"/>
289289
<item value="banner: 'Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod'"/>
290290
<item value="current user: 'SYS'"/>
291291
<item value="'TESTDB.REGRESS.RDBMS.DEV.US.ORACLE.COM'"/>
@@ -311,7 +311,7 @@
311311
<dumpTable value="True"/>
312312
</switches>
313313
<parse>
314-
<item value="current user is DBA: 'True'"/>
314+
<item value="current user is DBA: True"/>
315315
<item value="banner: 'Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod'"/>
316316
<item value="current user: 'SYS'"/>
317317
<item value="'TESTDB.REGRESS.RDBMS.DEV.US.ORACLE.COM'"/>
@@ -338,14 +338,14 @@
338338
<threads value="4"/>
339339
</switches>
340340
<parse>
341-
<item value="current user is DBA: 'True'"/>
341+
<item value="current user is DBA: True"/>
342342
<item value="r'Microsoft SQL Server 2005.+Oct 14 2005 00:33:37'"/>
343343
<item value="current user: 'sa'"/>
344344
<item value="current database: 'testdb'"/>
345345
<item value="r'available databases.+5.+master.+model.+msdb.+tempdb.+testdb'"/>
346346
<item value="r'dbo\.sysdiagrams.+dbo\.users'"/>
347347
<item value="r'3 columns.+surname.+varchar'"/>
348-
<item value="r'4 entries.+nameisnull.+'"/>
348+
<item value="r'5 entries.+nameisnull.+'"/>
349349
</parse>
350350
</case>
351351
<case name="MSSQL (--technique=E --is-dba --banner --current-user --current-db --dbs --tables -D testdb -T users --columns --dump)">
@@ -364,14 +364,14 @@
364364
<dumpTable value="True"/>
365365
</switches>
366366
<parse>
367-
<item value="current user is DBA: 'True'"/>
367+
<item value="current user is DBA: True"/>
368368
<item value="r'Microsoft SQL Server 2005.+Oct 14 2005 00:33:37'"/>
369369
<item value="current user: 'sa'"/>
370370
<item value="current database: 'testdb'"/>
371371
<item value="r'available databases.+5.+master.+model.+msdb.+tempdb.+testdb'"/>
372372
<item value="r'dbo\.sysdiagrams.+dbo\.users'"/>
373373
<item value="r'3 columns.+surname.+varchar'"/>
374-
<item value="r'4 entries.+nameisnull.+'"/>
374+
<item value="r'5 entries.+nameisnull.+'"/>
375375
</parse>
376376
</case>
377377
<case name="MSSQL (--technique=U --is-dba --banner --current-user --current-db --dbs --tables -D testdb -T users --columns --dump)">
@@ -390,14 +390,14 @@
390390
<dumpTable value="True"/>
391391
</switches>
392392
<parse>
393-
<item value="current user is DBA: 'True'"/>
393+
<item value="current user is DBA: True"/>
394394
<item value="r'Microsoft SQL Server 2005.+Oct 14 2005 00:33:37'"/>
395395
<item value="current user: 'sa'"/>
396396
<item value="current database: 'testdb'"/>
397397
<item value="r'available databases.+5.+master.+model.+msdb.+tempdb.+testdb'"/>
398398
<item value="r'dbo\.sysdiagrams.+dbo\.users'"/>
399399
<item value="r'3 columns.+surname.+varchar'"/>
400-
<item value="r'4 entries.+nameisnull.+'"/>
400+
<item value="r'5 entries.+nameisnull.+'"/>
401401
</parse>
402402
</case>
403403
<case name="MSSQL partial union (--technique=U --is-dba --banner --current-user --current-db --dbs --tables -D testdb -T users --columns --dump)">
@@ -416,14 +416,14 @@
416416
<dumpTable value="True"/>
417417
</switches>
418418
<parse>
419-
<item value="current user is DBA: 'True'"/>
419+
<item value="current user is DBA: True"/>
420420
<item value="r'Microsoft SQL Server 2005.+Oct 14 2005 00:33:37'"/>
421421
<item value="current user: 'sa'"/>
422422
<item value="current database: 'testdb'"/>
423423
<item value="r'available databases.+5.+master.+model.+msdb.+tempdb.+testdb'"/>
424424
<item value="r'dbo\.sysdiagrams.+dbo\.users'"/>
425425
<item value="r'3 columns.+surname.+varchar'"/>
426-
<item value="r'4 entries.+nameisnull.+'"/>
426+
<item value="r'5 entries.+nameisnull.+'"/>
427427
</parse>
428428
</case>
429429
</root>

0 commit comments

Comments
 (0)