Session是客户浏览器与服务器之间建立的交互信息状态。每一个不同的用户连接将得到不同的session,换句话说,服务器通过session跟踪和识别用户,所以现在这个blog知道我是admin,而你是guest :)
打开浏览器,当你第一次访问某个站点的asp文件的时候,服务器将会在响应数据中的Set-Cookie中设置用户的session(比如:Set-Cookie: ASPSESSIONIDGQGGQAFC=FPGBGNOCAGPLAPOFOPJGODCJ),以后再访问这个站点浏览器会一直提交这个数据知直到用户退出或者会话失效(IIS中默认20分钟不再访问即会话失效)。
对于IIS,它是靠浏览器提交的cookie值ASPSESSIONIDXXXXXXXX判断用户的。如果我们能够拿到合法用户的数据,那么我们修改提交的cookie的值为目标用户的,呵呵,你就会惊奇的发现我们的身份已经是那个用户了,哈,这就是传说中的session欺骗。
跨站的时候拿cookie可以,但是拿session就麻烦。Session很快就要失效,除非没事一直等着目标中招后立即行动,不然就算拿到了session早就过期N久了。
反过来想,既然拿cookie要用个脚本,那为什么不利用这个脚本直接将得到的cookies转发回去呢?Asp有个Microsoft.XMLHTTP对象可以向web服务器发送请求(Get、Post),就用它咯。这样就可以在会话没有失效以前就可以迅速以目标用户身份发送任意请求了,用户能做到的我们也可以做到哦。具体的数据就要看web程序了。