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");
            }
        }
Example #2
0
        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);
            }
        }