HanDs
管理员

[Delphi文章] 用idhttp提交cookie 





学习中请遵循国家相关法律法规,黑客不作恶。没有网络安全就没有国家安全

本站需要登陆后才能查看

以前不管是做什么软件,只要是关于网页post提交cookie的,我都是用TcpClient,为什么呢?
因为我一直找不到idhttp提交Cookie的方法,今天终于有了结果。

在Idhttp中,要想修改Cookie的代码,就要用到Request的RawHeaders中的Values值。
这个值怎么用呢?
Values接受一个string的值,该值指定了所访问的变量。
如HTTP头是这样定义的(其中一些):
Accept-Language: zh-cn
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1;
Cookie: JSESSIONID=aoOYvjM-IKzh
而Values的值就可以是Cookie,User-Agent,Accept-Encoding……等等。

所以,代码应该是这样:
try
  idhttp1.Request.RawHeaders.Values['Cookie'] := '这里是cookie的值'; //
  memo1.Lines.Add(idhttp1.Request.RawHeaders.Values['Cookie']);
  idhttp1.Post('/webmail/login.jsp',data1,data2);
  memo1.Lines.Add(idhttp1.Request.RawHeaders.Values['Cookie']);
  idhttp1.Request.RawHeaders.Values['Cookie'] := 'asdfasdf';
  memo1.Lines.Add(idhttp1.Request.RawHeaders.Text);
except
  idhttp1.Get(idhttp1.Response.Location, data1);
end;
初一看,这代码是没有什么问题的。但,memo1的第一次ADD并没有任何值,奇怪。
而第三次ADD就被改为了'asdfasdf',正是我们所希望的。
我正是卡在了这里。为什么第一次idhttp1.Request.RawHeaders.Values['Cookie'] := '这里是cookie的值'; 没有结果呢?

搞了很久。我才发现,在第一次传值的时候,RawHeaders跟本没有被初始化。而第三次经过Post以后,RawHeaders被初始化了,所以得到了我们所要的结果。
也就是说,在写漏洞上传程序这些的时候,如果先Post让RawHeaders初始化,那就没什么意义了,因为Post的时候,Cookie就不能被带上了。

正确的代码应该是这样:
try
  idhttp1.Request.SetHeaders; //最重要的初始化。
  idhttp1.Request.RawHeaders.Values['Cookie'] := '这里是cookie的值';
  idhttp1.Post('/webmail/login.jsp',data1,data2);
except
  idhttp1.Get(idhttp1.Response.Location, data1);
end;


这里,最重要的初始化是必需的。
idhttp1.Request.SetHeaders
这个过程如果没有。就会出错。


学习中请遵守法律法规,本网站内容均来自于互联网,本网站不负担法律责任
id ht tp
#1楼
发帖时间:2016-7-9   |   查看数:0   |   回复数:0
游客组
快速回复