伪造cookies偷数据
作者:英雄无敌 日期:2006-03-20
现在网站很多信息都是从其他网站的信息系统里偷来的,比如新闻小偷,最近我们的短信系统想上天气预报的功能,短信策划部的人说了就从XXXX那里拿数据吧,我就回来干活了。
正常的,得到了页面需要的参数,给Ypost过去吧,哦~不对,返回错误信息,再看看参数都是对的,难道不成有会话存在?关闭所有浏览器窗口,清除cookies,重新直接进入结果页面,果然出错,试了几把确定是从首页产生了cookies,通过这个cookies才能访问结果页,目的肯定是为了防止盗链。
如果能知道这个cookies的内容,我们伪造一个不久能直接访问结果页面了吗?我们来试试吧,首先想想,浏览器怎么访问一个网站呢?把请求发送到服务器,服务器根据请求返回相应的页面代码和其他信息,这个其他信息里面就包含了我们要的cookies的信息。怎么知道浏览器给服务器发送了什么信息?可以上网查查相关资料了,我是从我们的服务器访问日志中copy来一段稍微修改了一下。ok准备好了,我们就假冒浏览器发送请求了,telnet是个好东西。
telnet www.XXXXXXgov.cn 80
这样就出来telnet的命令行模式,输入
GET /XXXXXXX/index.jsp HTTP/1.1
HOST: www.nmc.gov.cn
什么?输入的字都不显示!直接copy再粘贴进去得了。然后回车回车回车...直到有反应为止,这个时候屏幕哗哗哗的现实结果了,注意,我们要的结果在信息的最上面,可要看好了
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Set-Cookie: JSESSIONID=36F4829CD68F71110C6480B4F1C373B4; Path=/XXXXX
Content-Type: text/html;charset=GB18030
Transfer-Encoding: chunked
Date: Mon, 20 Mar 2006 01:11:13 GMT
第一行是状态码,第二行是web服务器应该是tomcat吧,注意第三行就是偶们要的cookies了,所有java产生的cookies都是这个样子"JSESSIONID="。嘿嘿其他就不管了,要得就是这个。
接下来我们看看带上cookies的浏览器请求是什么样子的
GET /XXXXXX/citySearch.do?inputMode=citysearch&type=second&cityid=52896 HTTP/1.1
Referer: /XXXX/index.jsp\nUser-Agent: TAX
Cookie: $Version=\"1\"; JSESSIONID=XXXXXXXXXXXXXXX; Path=/XXXX
HOST: 127.0.0.1
ok,好像我们只要把从index.jsp这个页面产生的JSESSIONID=36F4829CD68F71110C6480B4F1C373B4; Path=/XXXX放到相应的位置,然后把这个请求发给对方网站就行了就行了。编辑后就是这样了
GET /XXXX/citySearch.do?inputMode=citysearch&type=second&cityid=52896 HTTP/1.1
Referer: /XXXX/index.jsp\nUser-Agent: TAX
Cookie: $Version=\"1\"; JSESSIONID=36F4829CD68F71110C6480B4F1C373B4; Path=/XXXX
HOST: 127.0.0.1
同样的telnet给发送过去,ok结果正确出来了。回来看看其实也不算伪造,就是截了我需要的cookies信息,然后把他带在请求里发送过去。
至于在程序里怎么写,我想这个各自的语言有各自的写法,只要把上面的过程体现出来就行了。
给段java写的吧
HttpClient client = new HttpClient();
GetMethod method = new GetMethod("http://www.XXXX.gov.cn/XXXX/index.jsp");
client.executeMethod(method);
String tt = method.getResponseHeaders()[1].getValue(); //取得“Set-Cookie”的值
tt = tt.replace("Path=/XXXX", "$path=\"/XXXX\""); //修改成合适HEADer的值
//**********************创建Header
GetMethod get = new GetMethod();
Header aaa = new Header();
aaa.setName("Cookie: ");
aaa.setValue("$Version=\"1\"; " + tt);
//*********************************
get.setRequestHeader(aaa);
//********************再次请求真正的城市天气页面
get.setPath("http://www.XXXX.gov.cn/XXXX/citySearch.do?inputMode=citysearch&type=second&cityid=" +
oCity.getId());
client.executeMethod(get);
System.out.println(method.getResponseHeaders()[i].getName()+"="+method.getResponseHeaders()[i].getValue());
response = new String(get.getResponseBodyAsString().getBytes("gb2312"));
get.releaseConnection();
method.releaseConnection();
response = response.replace("\r\n", "");
再回想一下,其实还有网站这么干的,判断请求页面的上一个页面是不是某个页面,如果不是就不给显示,或者强制转向到那个页面。其实这个依据就是上面的请求中的
Referer: /XXXX/index.jsp\nUser-Agent: TAX
呵呵,我们也同样的方式修改请求的head中的Referer属性,就能达到相同的效果。
欢迎使用我们的短信查天气,发送“武进天气”或者“武进气象”或者“武进的天气”任何带地区名字和“天气”或“气象”关键字的短语到80021598(移动)90021598(联通),一条三毛钱哦。
正常的,得到了页面需要的参数,给Ypost过去吧,哦~不对,返回错误信息,再看看参数都是对的,难道不成有会话存在?关闭所有浏览器窗口,清除cookies,重新直接进入结果页面,果然出错,试了几把确定是从首页产生了cookies,通过这个cookies才能访问结果页,目的肯定是为了防止盗链。
如果能知道这个cookies的内容,我们伪造一个不久能直接访问结果页面了吗?我们来试试吧,首先想想,浏览器怎么访问一个网站呢?把请求发送到服务器,服务器根据请求返回相应的页面代码和其他信息,这个其他信息里面就包含了我们要的cookies的信息。怎么知道浏览器给服务器发送了什么信息?可以上网查查相关资料了,我是从我们的服务器访问日志中copy来一段稍微修改了一下。ok准备好了,我们就假冒浏览器发送请求了,telnet是个好东西。
telnet www.XXXXXXgov.cn 80
这样就出来telnet的命令行模式,输入
GET /XXXXXXX/index.jsp HTTP/1.1
HOST: www.nmc.gov.cn
什么?输入的字都不显示!直接copy再粘贴进去得了。然后回车回车回车...直到有反应为止,这个时候屏幕哗哗哗的现实结果了,注意,我们要的结果在信息的最上面,可要看好了
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Set-Cookie: JSESSIONID=36F4829CD68F71110C6480B4F1C373B4; Path=/XXXXX
Content-Type: text/html;charset=GB18030
Transfer-Encoding: chunked
Date: Mon, 20 Mar 2006 01:11:13 GMT
第一行是状态码,第二行是web服务器应该是tomcat吧,注意第三行就是偶们要的cookies了,所有java产生的cookies都是这个样子"JSESSIONID="。嘿嘿其他就不管了,要得就是这个。
接下来我们看看带上cookies的浏览器请求是什么样子的
GET /XXXXXX/citySearch.do?inputMode=citysearch&type=second&cityid=52896 HTTP/1.1
Referer: /XXXX/index.jsp\nUser-Agent: TAX
Cookie: $Version=\"1\"; JSESSIONID=XXXXXXXXXXXXXXX; Path=/XXXX
HOST: 127.0.0.1
ok,好像我们只要把从index.jsp这个页面产生的JSESSIONID=36F4829CD68F71110C6480B4F1C373B4; Path=/XXXX放到相应的位置,然后把这个请求发给对方网站就行了就行了。编辑后就是这样了
GET /XXXX/citySearch.do?inputMode=citysearch&type=second&cityid=52896 HTTP/1.1
Referer: /XXXX/index.jsp\nUser-Agent: TAX
Cookie: $Version=\"1\"; JSESSIONID=36F4829CD68F71110C6480B4F1C373B4; Path=/XXXX
HOST: 127.0.0.1
同样的telnet给发送过去,ok结果正确出来了。回来看看其实也不算伪造,就是截了我需要的cookies信息,然后把他带在请求里发送过去。
至于在程序里怎么写,我想这个各自的语言有各自的写法,只要把上面的过程体现出来就行了。
给段java写的吧
HttpClient client = new HttpClient();
GetMethod method = new GetMethod("http://www.XXXX.gov.cn/XXXX/index.jsp");
client.executeMethod(method);
String tt = method.getResponseHeaders()[1].getValue(); //取得“Set-Cookie”的值
tt = tt.replace("Path=/XXXX", "$path=\"/XXXX\""); //修改成合适HEADer的值
//**********************创建Header
GetMethod get = new GetMethod();
Header aaa = new Header();
aaa.setName("Cookie: ");
aaa.setValue("$Version=\"1\"; " + tt);
//*********************************
get.setRequestHeader(aaa);
//********************再次请求真正的城市天气页面
get.setPath("http://www.XXXX.gov.cn/XXXX/citySearch.do?inputMode=citysearch&type=second&cityid=" +
oCity.getId());
client.executeMethod(get);
System.out.println(method.getResponseHeaders()[i].getName()+"="+method.getResponseHeaders()[i].getValue());
response = new String(get.getResponseBodyAsString().getBytes("gb2312"));
get.releaseConnection();
method.releaseConnection();
response = response.replace("\r\n", "");
再回想一下,其实还有网站这么干的,判断请求页面的上一个页面是不是某个页面,如果不是就不给显示,或者强制转向到那个页面。其实这个依据就是上面的请求中的
Referer: /XXXX/index.jsp\nUser-Agent: TAX
呵呵,我们也同样的方式修改请求的head中的Referer属性,就能达到相同的效果。
欢迎使用我们的短信查天气,发送“武进天气”或者“武进气象”或者“武进的天气”任何带地区名字和“天气”或“气象”关键字的短语到80021598(移动)90021598(联通),一条三毛钱哦。
[本日志由 英雄无敌 于 2006-03-20 10:23 AM 编辑]
上一篇: 关于越狱(prisonbreak)~下一篇: 关于投票
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags:
相关日志:
评论: 1 | 引用: 0 | 查看次数: 11159
发表评论
cookie欺骗用桂林老兵的Cookie & Inject Browser