mirror of
				https://github.com/sqlmapproject/sqlmap.git
				synced 2025-11-04 09:57:38 +03:00 
			
		
		
		
	Couple of fixes and some testing stuff
This commit is contained in:
		
							parent
							
								
									381deb68ff
								
							
						
					
					
						commit
						212c1ec1f2
					
				| 
						 | 
				
			
			@ -235,6 +235,7 @@ optDict = {
 | 
			
		|||
                               "profile":           "boolean",
 | 
			
		||||
                               "forceDns":          "boolean",
 | 
			
		||||
                               "ignore401":         "boolean",
 | 
			
		||||
                               "murphyRate":        "integer",
 | 
			
		||||
                               "smokeTest":         "boolean",
 | 
			
		||||
                               "liveTest":          "boolean",
 | 
			
		||||
                               "stopFail":          "boolean",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -19,7 +19,7 @@ from lib.core.enums import OS
 | 
			
		|||
from lib.core.revision import getRevisionNumber
 | 
			
		||||
 | 
			
		||||
# sqlmap version (<major>.<minor>.<month>.<monthly commit>)
 | 
			
		||||
VERSION = "1.0.9.40"
 | 
			
		||||
VERSION = "1.0.9.41"
 | 
			
		||||
REVISION = getRevisionNumber()
 | 
			
		||||
TYPE = "dev" if VERSION.count('.') > 2 and VERSION.split('.')[-1] != '0' else "stable"
 | 
			
		||||
TYPE_COLORS = {"dev": 33, "stable": 90, "pip": 34}
 | 
			
		||||
| 
						 | 
				
			
			@ -86,6 +86,9 @@ MAX_CONNECTIONS_REGEX = r"max.+connections"
 | 
			
		|||
# Timeout before the pre-connection candidate is being disposed (because of high probability that the web server will reset it)
 | 
			
		||||
PRECONNECT_CANDIDATE_TIMEOUT = 10
 | 
			
		||||
 | 
			
		||||
# Maximum sleep time in "Murphy" (testing) mode
 | 
			
		||||
MAX_MURPHY_SLEEP_TIME = 3
 | 
			
		||||
 | 
			
		||||
# Regular expression used for extracting results from Google search
 | 
			
		||||
GOOGLE_REGEX = r"webcache\.googleusercontent\.com/search\?q=cache:[^:]+:([^+]+)\+&cd=|url\?\w+=((?![^>]+webcache\.googleusercontent\.com)http[^>]+)&(sa=U|rct=j)"
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -59,6 +59,7 @@ class _ThreadData(threading.local):
 | 
			
		|||
        self.retriesCount = 0
 | 
			
		||||
        self.seqMatcher = difflib.SequenceMatcher(None)
 | 
			
		||||
        self.shared = shared
 | 
			
		||||
        self.validationRun = 0
 | 
			
		||||
        self.valueStack = []
 | 
			
		||||
 | 
			
		||||
ThreadData = _ThreadData()
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -759,6 +759,9 @@ def cmdLineParser(argv=None):
 | 
			
		|||
        parser.add_option("--dummy", dest="dummy", action="store_true",
 | 
			
		||||
                          help=SUPPRESS_HELP)
 | 
			
		||||
 | 
			
		||||
        parser.add_option("--murphy-rate", dest="murphyRate", type="int",
 | 
			
		||||
                          help=SUPPRESS_HELP)
 | 
			
		||||
 | 
			
		||||
        parser.add_option("--pickled-options", dest="pickledOptions",
 | 
			
		||||
                          help=SUPPRESS_HELP)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -90,6 +90,7 @@ from lib.core.settings import HTTP_ACCEPT_ENCODING_HEADER_VALUE
 | 
			
		|||
from lib.core.settings import MAX_CONNECTION_CHUNK_SIZE
 | 
			
		||||
from lib.core.settings import MAX_CONNECTIONS_REGEX
 | 
			
		||||
from lib.core.settings import MAX_CONNECTION_TOTAL_SIZE
 | 
			
		||||
from lib.core.settings import MAX_MURPHY_SLEEP_TIME
 | 
			
		||||
from lib.core.settings import META_REFRESH_REGEX
 | 
			
		||||
from lib.core.settings import MIN_TIME_RESPONSES
 | 
			
		||||
from lib.core.settings import IS_WIN
 | 
			
		||||
| 
						 | 
				
			
			@ -224,8 +225,10 @@ class Connect(object):
 | 
			
		|||
 | 
			
		||||
        if conf.offline:
 | 
			
		||||
            return None, None, None
 | 
			
		||||
        elif conf.dummy:
 | 
			
		||||
            return getUnicode(randomStr(int(randomInt()), alphabet=[chr(_) for _ in xrange(256)]), {}, int(randomInt())), None, None
 | 
			
		||||
        elif conf.dummy or conf.murphyRate and randomInt() % conf.murphyRate == 0:
 | 
			
		||||
            if conf.murphyRate:
 | 
			
		||||
                time.sleep(randomInt() % (MAX_MURPHY_SLEEP_TIME + 1))
 | 
			
		||||
            return getUnicode(randomStr(int(randomInt()), alphabet=[chr(_) for _ in xrange(256)]), {}, int(randomInt())), None, None if not conf.murphyRate else randomInt(3)
 | 
			
		||||
 | 
			
		||||
        threadData = getCurrentThreadData()
 | 
			
		||||
        with kb.locks.request:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -324,7 +324,7 @@ def bisection(payload, expression, length=None, charsetType=None, firstChar=None
 | 
			
		|||
                if not timeBasedCompare:
 | 
			
		||||
                    unexpectedCode |= threadData.lastCode not in (kb.injection.data[kb.technique].falseCode, kb.injection.data[kb.technique].trueCode)
 | 
			
		||||
                    if unexpectedCode:
 | 
			
		||||
                        warnMsg = "unexpected HTTP code '%d' detected. Will use (extra) validation step in similar cases" % threadData.lastCode
 | 
			
		||||
                        warnMsg = "unexpected HTTP code '%s' detected. Will use (extra) validation step in similar cases" % threadData.lastCode
 | 
			
		||||
                        singleTimeWarnMessage(warnMsg)
 | 
			
		||||
 | 
			
		||||
                if result:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -38,26 +38,26 @@ e4ca0fd47f20cf7ba6a5f5cbf980073c  lib/core/decorators.py
 | 
			
		|||
e4aec2b11c1ad6039d0c3dbbfbc5eb1a  lib/core/exception.py
 | 
			
		||||
cc9c82cfffd8ee9b25ba3af6284f057e  lib/core/__init__.py
 | 
			
		||||
91c514013daa796e2cdd940389354eac  lib/core/log.py
 | 
			
		||||
b9779615206791e6ebbaa84947842b49  lib/core/optiondict.py
 | 
			
		||||
5b079749c50240602ea92637e268ed31  lib/core/optiondict.py
 | 
			
		||||
74d826338a2cd66a4724d8486a648d93  lib/core/option.py
 | 
			
		||||
1e8948dddbd12def5c2af52530738059  lib/core/profiling.py
 | 
			
		||||
e60456db5380840a586654344003d4e6  lib/core/readlineng.py
 | 
			
		||||
5ef56abb8671c2ca6ceecb208258e360  lib/core/replication.py
 | 
			
		||||
99a2b496b9d5b546b335653ca801153f  lib/core/revision.py
 | 
			
		||||
7c15dd2777af4dac2c89cab6df17462e  lib/core/session.py
 | 
			
		||||
beddfa335e49041ded23235064af09de  lib/core/settings.py
 | 
			
		||||
f736ee4e7e504498859dce2171991550  lib/core/settings.py
 | 
			
		||||
7af83e4f18cab6dff5e67840eb65be80  lib/core/shell.py
 | 
			
		||||
23657cd7d924e3c6d225719865855827  lib/core/subprocessng.py
 | 
			
		||||
0bc2fae1dec18cdd11954b22358293f2  lib/core/target.py
 | 
			
		||||
d43f059747ffd48952922c94152e2a07  lib/core/testing.py
 | 
			
		||||
7ec80da7d7fa8ceaf2ff606cfa578c15  lib/core/threads.py
 | 
			
		||||
2cafee22d9f8018e7efff0a5e3178596  lib/core/threads.py
 | 
			
		||||
53c15b78e0288274f52410db25406432  lib/core/unescaper.py
 | 
			
		||||
6bdc53e2ca152ff8cd35ad671e48a96b  lib/core/update.py
 | 
			
		||||
8485a3cd94c0a5af2718bad60c5f1ae5  lib/core/wordlist.py
 | 
			
		||||
354ecc0c6d3e0ac9c06ed897c4d52edf  lib/core/xmldump.py
 | 
			
		||||
cc9c82cfffd8ee9b25ba3af6284f057e  lib/__init__.py
 | 
			
		||||
c1288bc4ce5651dbdd82d4a9435fdc03  lib/parse/banner.py
 | 
			
		||||
daea32290b63c43f7d1c0e14c66d4826  lib/parse/cmdline.py
 | 
			
		||||
498be08b12a01bd79d82fc993bd07965  lib/parse/cmdline.py
 | 
			
		||||
8ec4d4f02634834701f8258726f2e511  lib/parse/configfile.py
 | 
			
		||||
fe4e2152292587928edb94c9a4d311ff  lib/parse/handler.py
 | 
			
		||||
8e6bfb13e5a34b2610f3ff23467a34cf  lib/parse/headers.py
 | 
			
		||||
| 
						 | 
				
			
			@ -68,7 +68,7 @@ b40a4c5d91770d347df36d3065b63798  lib/parse/sitemap.py
 | 
			
		|||
9299f21804033f099681525bb9bf51c0  lib/request/basicauthhandler.py
 | 
			
		||||
ca9879ea9277810c5fce0f0d8d2f8e03  lib/request/basic.py
 | 
			
		||||
c48285682a61d49982cb508351013cb4  lib/request/comparison.py
 | 
			
		||||
29148e4412209526b18acbd8a942fe03  lib/request/connect.py
 | 
			
		||||
c8aeed55d933b4944da038fdee4cdbc6  lib/request/connect.py
 | 
			
		||||
49b4c583af68689de5f9acb162de2939  lib/request/direct.py
 | 
			
		||||
1a46f7bb26b23ec0c0d9d9c95828241b  lib/request/dns.py
 | 
			
		||||
70ceefe39980611494d4f99afb96f652  lib/request/httpshandler.py
 | 
			
		||||
| 
						 | 
				
			
			@ -87,7 +87,7 @@ cc9c82cfffd8ee9b25ba3af6284f057e  lib/takeover/__init__.py
 | 
			
		|||
7d6cd7bdfc8f4bc4e8aed60c84cdf87f  lib/takeover/udf.py
 | 
			
		||||
f6e3084abd506925a8be3d1c0a6d058c  lib/takeover/web.py
 | 
			
		||||
9af83a62de360184f1c14e69b8a95cfe  lib/takeover/xp_cmdshell.py
 | 
			
		||||
9e4ae2df75cab68ea297f0db50b574c7  lib/techniques/blind/inference.py
 | 
			
		||||
0b44d8de954e74ac9bac13594b9d81e8  lib/techniques/blind/inference.py
 | 
			
		||||
cc9c82cfffd8ee9b25ba3af6284f057e  lib/techniques/blind/__init__.py
 | 
			
		||||
cc9c82cfffd8ee9b25ba3af6284f057e  lib/techniques/brute/__init__.py
 | 
			
		||||
d36effffe64e63ef9b3be490f850e2cc  lib/techniques/brute/use.py
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue
	
	Block a user