войти в Joomla из приложения C # - PullRequest
4 голосов
/ 08 августа 2011

Я использую много методов, чтобы войти в админ-панель 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);

1 Ответ

2 голосов
/ 08 августа 2011

проблема в этой строке:

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

, которая является токеном антиспуфинга CSRF от Joomla.Joomla!пытается снова защитить CSRF, вставляя этот токен в каждую форму POST и каждую строку запроса GET, которая может что-то изменить в Joomla!система.Эта случайная строка обеспечивает защиту, поскольку не только скомпрометированный сайт должен знать URL-адрес целевого сайта и действительный формат запроса для целевого сайта, но также должен знать случайную строку, которая изменяется для каждого сеанса и каждого пользователя.

Чтобы отправить правильный токен с вашим запросом на вход, вам необходимо:

  1. Сначала запросить правильную форму входа в систему с помощью GET, используя запрос "Клиентский объект"
  2. Получить токен с помощью регулярного выражения /name="([a-zA-z0-9]{32})"/
  3. Отправить запрос на вход в систему с токеном

Удачи

РЕДАКТИРОВАТЬ: К вашей «коллекции» добавьте еще один параметр:

Collection.Add("task", "login");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...