2011-08-07 2 views
4

J'utilise de nombreuses méthodes trop se connecter au panneau d'administration joomla. mais la valeur renvoyée est identique à la page de connexion. même lorsque le nom d'utilisateur et le mot de passe sont corrects.se connecter à joomla à partir d'une application C#

exemple:

WebClient Client = new WebClient(); 
System.Collections.Specialized.NameValueCollection Collection = 
    new System.Collections.Specialized.NameValueCollection(); 
Collection.Add("username", "--my username--"); 
Collection.Add("passwd", "--my password--"); 
Collection.Add("option", "com_login"); 
Colletion.Add("e0484cdc56d8ccc42187d26a813324ba", "1"); 
Collection.Add("lang", ""); 

Client.Proxy = null; 
byte[] res = Client.UploadValues(
    "http://127.0.0.1/administrator/index.php", "POST", Collection); 
textBox1.Text = Encoding.UTF8.GetString(res, 0, res.Length); 

Répondre

2

le problème est avec cette ligne:

Colletion.Add("e0484cdc56d8ccc42187d26a813324ba", "1"); 

qui est CSRF de joomla jeton anti-usurpation d'identité. Joomla! tente de protéger agrement CSRF en insérant un ce jeton dans chaque formulaire POST et chaque chaîne de requête GET qui est capable de modifier quelque chose dans le Joomla! système. Cette chaîne aléatoire fournit une protection car non seulement le site compromis doit connaître l'URL du site cible et un format de requête valide pour le site cible, mais il doit également connaître la chaîne aléatoire qui change pour chaque session et chaque utilisateur.

Pour envoyer un jeton correct avec votre demande de connexion que vous auriez à:

  1. demander d'abord un formulaire de connexion correcte par GET en utilisant le « objet client » demande
  2. Récupérer le jeton avec regex /name="([a-zA-z0-9]{32})"/
  3. Envoyer la demande de connexion avec le jeton

Bonne chance

EDIT: Pour votre "collection" ajouter un paramètre de plus:

Collection.Add("task", "login"); 
Questions connexes