(&self, pb: &ProgressBar)
| 251 | .await? |
| 252 | { |
| 253 | vulnerable = true; |
| 254 | break; |
| 255 | } |
| 256 | } |
| 257 | if vulnerable { |
| 258 | continue; |
| 259 | } |
| 260 | |
| 261 | for (true_payload, false_payload) in &self.boolean_based_payloads { |
| 262 | if self |
| 263 | .test_form_boolean_based(&client, form, true_payload, false_payload, i, pb) |
| 264 | .await? |
| 265 | { |
| 266 | vulnerable = true; |
| 267 | break; |
| 268 | } |
| 269 | } |
| 270 | if vulnerable { |
| 271 | continue; |
| 272 | } |
| 273 | |
| 274 | // Baseline control for the form's original values. |
| 275 | let baseline = self.measure_form_time(&client, form).await; |
| 276 | for payload in &self.time_based_payloads { |
| 277 | if self |
| 278 | .test_form_time_based(&client, form, payload, i, baseline, pb) |
| 279 | .await? |
| 280 | { |
| 281 | break; |
| 282 | } |
| 283 | } |
| 284 | } |
| 285 | } |
| 286 | Ok(()) |
| 287 | } |
| 288 | |
| 289 | async fn test_form_error_based( |
| 290 | &self, |
| 291 | client: &reqwest::Client, |
| 292 | form: &Form, |
| 293 | payload: &str, |
| 294 | param_index: usize, |
| 295 | pb: &ProgressBar, |
| 296 | ) -> Result<bool, reqwest::Error> { |
| 297 | let tested_param = form.inputs[param_index].name.clone(); |
| 298 | let form_data = inject_form_field(form, param_index, |_| payload.to_string()); |
| 299 |
no test coverage detected