从c#应用程序登录joomla

我使用很多方法登录到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);

最佳答案 问题出在这一行:

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

这是joomla的CSRF反欺骗令牌.的Joomla!尝试通过在每个POST表单中插入一个此令牌以及能够修改Joomla中的某些内容的每个GET查询字符串来保护全新CSRF!系统.此随机字符串提供保护,因为受感染的站点不仅需要知道目标站点的URL和目标站点的有效请求格式,还必须知道每个会话和每个用户更改的随机字符串.

为了使用您的登录请求发送正确的令牌,您必须:

>首先使用“客户端对象”请求通过GET请求正确的登录表单
>使用regex / name =“([a-zA-z0-9] {32})”/检索令牌
>使用令牌发送登录请求

祝好运

编辑:给你的“收藏”添加一个参数:

Collection.Add("task", "login");
点赞