public async Task <string> POSTAttack(FilterByPassObject byPassObject, FormContainer item) { // Update Status des FilterByPassObject (Logging) _responseForm.UpdateStatus(byPassObject.ID, "running request..."); string[] inputs = item.GetInputs().ToArray <string>(); using (var client = new HttpClient()) { var values = new Dictionary <string, string>(); try { if (inputs != null) { foreach (string input in inputs) { if (input.ToLower() != "submit") { values.Add(input, byPassObject.ByPassString); } } } } catch (Exception e) { return("d"); } // Submit gesetzt? bei Self-Calling Sites string[] submit = item.GetSubmit(); if (submit != null) { values.Add(submit[0], submit[1]); } var content = new FormUrlEncodedContent(values); var response = await client.PostAsync(item.Action, content); // Update Status des FilterByPassObject (Logging) _responseForm.UpdateStatus(byPassObject.ID, "continue ..."); // Das FilterByPassObject selbst aktualisieren byPassObject.ResponseContent = response.ToString() + Environment.NewLine + response.RequestMessage + Environment.NewLine + await response.Content.ReadAsStringAsync(); return("d"); } }
public FormContainer CopyNew() { FormContainer _copy = new FormContainer(Website); _copy.Action = this.Action; _copy.Method = this.Method; foreach (string item in _inputs) { _copy.AddInput(item); } return(_copy); }
private void FilterFormContainer(List <HtmlNode> docNodeList, string website) { // Valide InputTags zur weiteren Verarbeitung --> DEBUG: "submit entfernt" IEnumerable <string> validInputTags = new List <string>() { "text", "password" }; // Valide FormTags zur weiteren Verarbeitung IEnumerable <string> validFormTags = new List <string>() { "action", "method" }; // Prüfe alle HTML Nodes (tags) foreach (var node in docNodeList) { // Formtags mit validen Attributen als FormContainer anlegen if (node.Name.ToLower() == "form") { _formTagOpen = true; if (_frmContainer == null) { _frmContainer = new FormContainer(website); } else { // Speichere aktuellen FormContainer in Liste _formTags.Add(_frmContainer.CopyNew()); // Lege für weiteres FormTag ein neues Objekt an _frmContainer = new FormContainer(website); } // Speichere die validen Attribute des FormTags im FormContainer-Object foreach (var attribute in node.Attributes) { if (validFormTags.Contains(attribute.Name.ToLower())) { _frmContainer.SetAttributeValue(attribute.Name, attribute.Value); } } } // Input Nodes in FormContainer speichern if (node.Name.ToLower() == "input" && _formTagOpen) { // InputTag in Liste der validen Tags? if (validInputTags.Contains((node.GetAttributeValue("type", "undefined").ToLower()))) { _frmContainer.AddInput(node.GetAttributeValue("name", "undefined")); } // Submit in FormContainer speichern if (node.GetAttributeValue("type", "undefined").ToLower() == "submit") { _frmContainer.AddSubmit(node.GetAttributeValue("name", "undefined"), node.GetAttributeValue("value", "undefined")); } } } // Letztes FormTag als Object in den Container hinzufügen if (_frmContainer != null) { _formTags.Add(_frmContainer); } }