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

Skip to content

Commit eecee3b

Browse files
committed
Added resume functionality to -d and fixed logging with -d
1 parent e0d0913 commit eecee3b

10 files changed

Lines changed: 33 additions & 25 deletions

File tree

lib/core/convert.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@
2727
except:
2828
import md5
2929
import sha
30-
30+
31+
import pickle
3132
import sys
3233
import struct
3334
import urllib
@@ -38,7 +39,13 @@ def base64decode(string):
3839
return string.decode("base64")
3940

4041
def base64encode(string):
41-
return string.encode("base64")[:-1]
42+
return string.encode("base64")[:-1].replace("\n", "")
43+
44+
def base64pickle(string):
45+
return base64encode(pickle.dumps(string))
46+
47+
def base64unpickle(string):
48+
return pickle.loads(base64decode(string))
4249

4350
def hexdecode(string):
4451
string = string.lower()

lib/core/target.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -123,14 +123,14 @@ def __setOutputResume():
123123
if not conf.flushSession:
124124
readSessionFP = open(conf.sessionFile, "r")
125125
lines = readSessionFP.readlines()
126-
126+
127127
for line in lines:
128128
if line.count("][") == 4:
129129
line = line.split("][")
130-
130+
131131
if len(line) != 5:
132132
continue
133-
133+
134134
url, _, _, expression, value = line
135135

136136
if not value:
@@ -141,10 +141,10 @@ def __setOutputResume():
141141

142142
if value[-1] == "\n":
143143
value = value[:-1]
144-
145-
if url != conf.url:
144+
145+
if url not in ( conf.url, conf.hostname ):
146146
continue
147-
147+
148148
if url not in kb.resumedQueries.keys():
149149
kb.resumedQueries[url] = {}
150150
kb.resumedQueries[url][expression] = value

lib/request/direct.py

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,12 @@
2323
"""
2424

2525
from lib.core.agent import agent
26+
from lib.core.common import dataToSessionFile
27+
from lib.core.convert import base64pickle
28+
from lib.core.convert import base64unpickle
2629
from lib.core.data import conf
2730
from lib.core.data import kb
31+
from lib.core.data import logger
2832
from lib.core.settings import SQL_STATEMENTS
2933
from lib.utils.timeout import timeout
3034

@@ -42,14 +46,25 @@ def direct(query, content=True):
4246
select = True
4347
break
4448

45-
if select:
46-
output = timeout(func=conf.dbmsConnector.select, args=(query,), duration=conf.timeout, default=None)
47-
else:
49+
logger.log(9, query)
50+
51+
if not select:
4852
output = timeout(func=conf.dbmsConnector.execute, args=(query,), duration=conf.timeout, default=None)
53+
elif conf.hostname in kb.resumedQueries and query in kb.resumedQueries[conf.hostname]:
54+
output = base64unpickle(kb.resumedQueries[conf.hostname][query][:-1])
55+
56+
infoMsg = "resumed from file '%s': " % conf.sessionFile
57+
infoMsg += "%s..." % str(output)[:20]
58+
logger.info(infoMsg)
59+
elif select:
60+
output = timeout(func=conf.dbmsConnector.select, args=(query,), duration=conf.timeout, default=None)
4961

5062
if output is None or len(output) == 0:
5163
return None
5264
elif content:
65+
if conf.hostname not in kb.resumedQueries or ( conf.hostname in kb.resumedQueries and query not in kb.resumedQueries[conf.hostname] ):
66+
dataToSessionFile("[%s][%s][%s][%s][%s]\n" % (conf.hostname, kb.injPlace, conf.parameters[kb.injPlace], query, base64pickle(output)))
67+
5368
if len(output) == 1:
5469
if len(output[0]) == 1:
5570
return str(list(output)[0][0])

plugins/dbms/access/connector.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,6 @@ def fetchall(self):
6767
return None
6868

6969
def execute(self, query):
70-
logger.debug(query)
71-
7270
try:
7371
self.cursor.execute(query)
7472
except (pyodbc.OperationalError, pyodbc.ProgrammingError), msg:

plugins/dbms/firebird/connector.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,6 @@ def fetchall(self):
6666
return None
6767

6868
def execute(self, query):
69-
logger.debug(query)
70-
7169
try:
7270
self.cursor.execute(query)
7371
except kinterbasdb.OperationalError, msg:

plugins/dbms/mssqlserver/connector.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,6 @@ def fetchall(self):
7070
return None
7171

7272
def execute(self, query):
73-
logger.debug(query)
74-
7573
try:
7674
self.cursor.execute(query)
7775
except (pymssql.OperationalError, pymssql.ProgrammingError), msg:

plugins/dbms/mysql/connector.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,6 @@ def fetchall(self):
6666
return None
6767

6868
def execute(self, query):
69-
logger.debug(query)
70-
7169
try:
7270
self.cursor.execute(query)
7371
except (MySQLdb.OperationalError, MySQLdb.ProgrammingError), msg:

plugins/dbms/oracle/connector.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,6 @@ def fetchall(self):
6767
return None
6868

6969
def execute(self, query):
70-
logger.debug(query)
71-
7270
try:
7371
self.cursor.execute(query)
7472
except (cx_Oracle.DatabaseError), msg:

plugins/dbms/postgresql/connector.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,6 @@ def fetchall(self):
6565
return None
6666

6767
def execute(self, query):
68-
logger.debug(query)
69-
7068
try:
7169
self.cursor.execute(query)
7270
except (psycopg2.OperationalError, psycopg2.ProgrammingError), msg:

plugins/dbms/sqlite/connector.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,6 @@ def fetchall(self):
6767
return None
6868

6969
def execute(self, query):
70-
logger.debug(query)
71-
7270
try:
7371
self.cursor.execute(query)
7472
except sqlite3.OperationalError, msg:

0 commit comments

Comments
 (0)