【愚公系列】2021年12月 攻防世界-简单题-WEB-004(cookie)
一、cookie
题目链接:https://adworld.xctf.org.cn/task/task_list?type=web&number=3&grade=0&page=1
二、使用步骤
1.点击获取在线场景
2.查看cookie
进入页面:F12查看cookie
发现cookie.php文件
进入相关页面
提示查看http响应,切换到网络一栏
发现flag:cyberpeace{3f0d9ecf16cf128697bacc6644b49ce2}
总结
1.概念
HTTP协议本身是无状态的。什么是无状态呢,即服务器无法判断用户身份。Cookie实际上是一小段的文本信息(key-value格式)。客户端向服务器发起请求,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie。客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态。
2.机制
客户端发送一个请求到服务器 --> 服务器发送一个HttpResponse响应到客户端,其中包含Set-Cookie的头部 -->客户端保存cookie,之后向服务器发送请求时,HttpRequest请求中会包含一个Cookie的头部 -->服务器返回响应数据。以下为cookie的属性值和对应的介绍:
Secure | 如果设置了这个属性,那么只会在 SSH 连接时才会回传该 Cookie |
---|---|
NAME=VALUE | 键值对,可以设置要保存的 Key/Value,注意这里的 NAME 不能和其他属性项的名字一样 |
Expires | 过期时间,在设置的某个时间点后该 Cookie 就会失效 |
Domain | 生成该 Cookie 的域名,如 domain=“www.baidu.com” |
Path | 该 Cookie 是在当前的哪个路径下生成的,如 path=/wp-admin/ |
3.修改或者删除cookie
HttpServletResponse提供的Cookie操作只有一个addCookie(Cookie cookie),所以想要修改Cookie只能使用一个同名的Cookie来覆盖原先的Cookie。如果要删除某个Cookie,则只需要新建一个同名的Cookie,并将maxAge设置为0,并覆盖原来的Cookie即可。新建的Cookie,除了value、maxAge之外的属性,比如name、path、domain都必须与原来的一致才能达到修改或者删除的效果。否则,浏览器将视为两个不同的Cookie不予覆盖。值得注意的是,从客户端读取Cookie时,包括maxAge在内的其他属性都是不可读的,也不会被提交。浏览器提交Cookie时只会提交name和value属性,maxAge属性只被浏览器用来判断Cookie是否过期,而不能用服务端来判断。
- 点赞
- 收藏
- 关注作者
评论(0)