IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Programme Brute Force formulaires HTTP (POST) !


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 2
    Par défaut Programme Brute Force formulaires HTTP (POST) !
    Bonjour à tous !

    Je débute en programmation (deuxième année d'école d'info) et je fais beaucoup de petits programmes pour me faciliter la vie, ou juste par simple intérêt. Je m’intéresse en ce moment aux algorithmes Brute-Force, et me suis mis en tête de réussir à cracker l'authentification de mon propre site !

    J'ai donc un peu fouiné sur le net, et j'ai trouvé comment envoyer une requête POST avec des infos personnalisées depuis un programme Java.

    Voici donc les étapes que mon programme réussit à faire:
    * Se connecter à mon site
    * Envoyer la requête POST au site
    * Récupérer le code HTML (code source) de la page.

    J'attire votre attention sur cette dernière étape.

    Lorsqu'un inconnu se connecte au site, il est écrit "Bonjour" (page1) sur la page d’accueil.
    Lorsque c'est une personne identifiée, il est écrit "Bienvenue" (page2).

    Mon critère de réussite de l'algorithme est donc que la réponse HTML contienne la chaîne "Bienvenue".

    Mais là est le problème: peut importe les informations envoyées par la requête POST, je reçois toujours le code source de la page réservée aux inconnus. La chaîne contient donc toujours "Bonjour" et non "Bienvenue".

    J'ai donc, en rapport avec le code ci-joint, plusieurs questions:
    * Le site arrive-t-il à bloquer ce genre d'authentifications ?
    * Est-ce que j'envoie la requête à la bonne page ? La page 2 est bien la réponse à la requête POST vers la page 1, non ?
    * J'ai entendu parler de méthodes en Java qui prennent en compte les Cookies, dois-je les utiliser ici ?

    Voici mon code (je précise que j'ai récupéré certaines parties de ce code sur le net, et ne suis donc pas le seul auteur) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.net.URL;
    import java.net.URLConnection;
    import java.net.URLEncoder;
     
    public class SendHttpPost {
     
        public static String post(String adress, String[] keys, String[] values) throws IOException{
     
            String result = "";
            OutputStreamWriter writer = null;
            BufferedReader reader = null;
     
            try {
            //Paramètre de la requette POST
            String data="";
     
            for(int i=0; i<keys.length; i++){
     
            if (i!=0) data += "&amp;";
            data +=URLEncoder.encode(keys[i], "UTF-8")+"="+URLEncoder.encode(values[i], "UTF-8");
            }
     
            //Initialisation de la connection
            URL url = new URL(adress);
            URLConnection conn = url.openConnection();
            conn.setDoOutput(true);
     
     
            //Envoie de la requête
            writer = new OutputStreamWriter(conn.getOutputStream());
            writer.write(data);
            writer.flush();
     
     
            //Lecture de la réponse HTML
            reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            String ligne;
     
            while ((ligne = reader.readLine()) != null) {
            result+=ligne;
            }
     
            }catch (Exception e) {
            e.printStackTrace();
            }finally{
            try{writer.close();}catch(Exception e){}
            try{reader.close();}catch(Exception e){}
            }
     
            return result;
            }
     
    public static void main(String[] args){
        String[] keys = {"pseudo", "pass"};
        String[] values = {"toto", "123soleil"};
     
        try {
            System.out.print("Réponse HTML (classe1): \n");
            System.out.print(post("www.monSite.fr/accueil.html",keys ,values ));
        } catch (IOException e) {
    System.out.print("Crash main");
        }
    }
    }
    Merci d'avance pour votre aide.

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Hello,

    Citation Envoyé par Ymca93 Voir le message
    * Le site arrive-t-il à bloquer ce genre d'authentifications ?
    En principe non, c'est plutôt ton programme qui s'y prend mal. Après tout un navigateur est un programme comme un autre et ne doit pas être bloqué.

    Citation Envoyé par Ymca93 Voir le message
    * Est-ce que j'envoie la requête à la bonne page ? La page 2 est bien la réponse à la requête POST vers la page 1, non ?
    Nous ne risquons pas de le deviner, ça dépend de ton site, chaque site fait comme il veut.

    Citation Envoyé par Ymca93 Voir le message
    * J'ai entendu parler de méthodes en JAVA qui prennent en compte les Cookies, dois-je les utiliser ici ?
    Pareil nous ne risquons pas de le deviner.

    Ça se ferait bien plus facilement avec la bibliothèque Apache HttpClient qu'avec juste URLConnection. Notamment, un HttpClient gardera les cookies qu'un site lui a envoyés, et les lui renverra à la prochaine requête.


    Concernant le code que tu nous montres :
    - c'est quoi ce &amp; -_-° ? T'envoies pas du XML, ça a rien à faire là, il faut juste un &
    - il va pas deviner que tu veux envoyer en POST si tu ne le lui dis pas.
    - Les données que tu essaies d'envoyer sont de Content-Type: application/x-www-form-urlencoded et il ne va pas le deviner non plus si tu ne le lui dis pas.
    Tout cela serait géré tout seul par Apache HttpClient.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 2
    Par défaut
    Génial ! Merci de ta réponse thelvin !

    Je vais essayer de bosser avec la bibliothèque que tu m'as indiqué.

    YM.

Discussions similaires

  1. PHP HTTP POST et API Flickr envoi d'un formulaire et retour
    Par YannCo dans le forum Général Conception Web
    Réponses: 0
    Dernier message: 09/01/2011, 01h21
  2. Envoi de requête HTTP POST sans formulaire
    Par youpitralala dans le forum Langage
    Réponses: 3
    Dernier message: 02/09/2009, 17h57
  3. Programme de résolution d'équation par brute force
    Par black_hole dans le forum x86 32-bits / 64-bits
    Réponses: 0
    Dernier message: 21/08/2008, 18h55
  4. [curl] requete http post ( simuler envoi de formulaire )
    Par mikebranque dans le forum Bibliothèques
    Réponses: 0
    Dernier message: 07/07/2008, 21h55
  5. [HTTP][POST] passassion de variable
    Par Yodalf dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 04/09/2004, 21h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo