2011-08-07 3 views
4

私はjoomla adminパネルにも多くの方法でログインしています。 ですが、戻り値はログインページと同じです。 ユーザー名とパスワードが正しい場合でもC#アプリケーションからjoomlaにログイン

例:

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); 

答えて

2

問題は、この行を次のとおりです。

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

のJoomlaのCSRFアンチスプーフィングトークンです。 Joomla! Joomla!で何かを変更できる各POSTフォームと各GETクエリ文字列にこのトークンを挿入することで、CSRFを再度保護しようとします。システム。このランダムな文字列は、標的とするサイトのURLとターゲットサイトの有効な要求フォーマットを知る必要があるだけでなく、セッションやユーザごとに変化するランダムな文字列も知っている必要があるため、保護を提供します。

にあなたが持っているだろうあなたのログイン要求で正しいトークンを送っするために:まずトークンを取得し、「Clientオブジェクト」要求

  • を使用してGETすることにより、正しいログインフォームを要求

    1. 正規表現/name="([a-zA-z0-9]{32})"/
    2. でトークン

    グッドラック

    でログイン要求を送信します10

    編集:「コレクション」にもう1つのパラメータを追加してください:

    Collection.Add("task", "login"); 
    
  • 関連する問題