Skip to content

Commit b817a1f

Browse files
committed
Update test module to properly handle multiline return values so that we can properly test things like dumping file content
1 parent 5dd68b2 commit b817a1f

File tree

1 file changed

+19
-8
lines changed

1 file changed

+19
-8
lines changed

test/modules/auxiliary/test/sqli_test.rb

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)