Algoritmo per generare tutte le possibili combinazioni

-1

Sviluppo un'applicazione con WinForms / C #.

  • Nel mio software ho una lista di oggetti, diciamo List<Item> Items .
  • C'è anche un altro elenco di oggetti, diciamo List<Factor> Factors .
  • Ogni elemento contiene più Fattori di output (informazioni che puoi estrarre dall'elemento).
  • Inoltre, ogni elemento contiene più fattori di input (possono attivare una funzione nell'elemento. Ogni elemento richiede un diverso insieme di fattori).

Un esempio molto semplicistico (come lo pseudo-codice) della classe potrebbe essere:

class Factor
{
  int Id { get; set; };
  string Title;
  string Description;
}

class Item1 : Item
{
  List<Factor> OutputFactors { get; set; }  //Factor1, Factor3 
  List<Factor> InputFactors { get; set; }  //Factor4, Factor2, Factor7 
  ...
}

class Item2 : Item
{
  List<Factor> OutputFactors { get; set; }  //Factor3, Factor5, Factor6 
  List<Factor> InputFactors { get; set; }  //Factor1, Factor3 
  ...
}

Domanda: in un dato List<Item> come posso trovare tutti i possibili percorsi / combinazioni che possono attivare ogni elemento della lista.

Ad esempio, il codice precedente con Item1 e Item2 avrebbe come risultato:

--------Path1----------------
Get Factors from: Item1.OutputFactors[0] , Item1.OutputFactors[1] 
Triggers: Item2.InputFactors
--------Path2----------------
Get Factors from: Item1.OutputFactors[0] , Item2.OutputFactors[0] 
Triggers: Item2.InputFactors
--------Path3----------------
....

Nota: userò il codice in uno strumento per la penna che sviluppo, al fine di rintracciare tutti i possibili fattori di attacco in ogni pagina web di un dominio.

    
posta Tasos Kalaitzidis 20.07.2018 - 16:27
fonte

1 risposta

2

Gli esempi che hai fornito sono abbastanza privi di senso.

Ciò che stai descrivendo con "attributi" sono solo parametri di richiesta che vengono utilizzati quando uno viene reindirizzato da una pagina all'altra.

Un algoritmo per mappare tutte le pagine è andare sulla home page, regexare tutti i tag form, aggiungere l'attributo action (url) a un elenco, espandere l'oggetto list attributo action dai parametri della richiesta nel corpo del tag form ( lista) e ricorda anche quale metodo di richiesta è (get / post).

Facendo questo in modo ricorsivo, raggiungerai tutte le pagine a cui hai accesso. Se la pagina 1 reindirizza alla pagina 2 con params: p1, p2, p3, la tua lista conterrà [{fromPage: page1, toPage: page2, params: [p1, p2, p3], metodo: get}, ...].

Una volta raccolte tutte queste informazioni, puoi iniziare a eseguire test di confine ("attacchi") su tutti i parametri. Per page1- > page2, dovresti usare p1 - p3 e impostarli su qualsiasi valore possibile e vedere se il server si blocca o si comporta in modo inappropriato ...

Ma prima che tu possa fare tutto questo, avrai impostato un allarme interno e sarai pesantemente monitorato e trattato in modo appropriato! A meno che tu non abbia l'autorità di testare legittimamente una pagina, non mi preoccuperei! Non ne vale la pena! Non presumo che tu abbia a causa della mancanza di conoscenza che hai dimostrato nel modo in cui hai posto la domanda!

    
risposta data 20.07.2018 - 17:15
fonte

Leggi altre domande sui tag