session与cookie的区别
cookie数据保存在客户端,session数据保存在服务端。
session
简单的说,当你登陆一个网站的时候,如果web服务器端使用的是session,那么所有的数据都保存在服务器上,客户端每次请求服务器的时候会发送当前会话sessionid,服务器根据当前sessionid判断相应的用户数据标志,以确定用户是否登陆或具有某种权限。由于数据是存储在服务器上面,所以你不能伪造。
cookie
sessionid是服务器和客户端连接时候随机分配的,如果浏览器使用的是cookie,那么所有数据都保存在浏览器端,比如你登陆以后,服务器设置了cookie用户名,那么当你再次请求服务器的时候,浏览器会将用户名一块发送给服务器,这些变量有一定的特殊标记。服务器会解释为cookie变量,所以只要不关闭浏览器,那么cookie变量一直是有效的,所以能够保证长时间不掉线。
Session伪造记录
别的我就不多说了,直接上干货
因为Session是存储在我们本地的浏览器上的,我可以随时的获取到这个值,但是我们所获取的值是经过算法加密的。如果我们需要伪造这个Session值我们就需要进行session的解码,然后改变里面的一些值,再进行加密进而达到伪造的效果。
Session获取
获取到这个我们可以直接在浏览的页面上按下 fn+f12拿到该值。
或则使用BP进行抓包,也可拿到该值。
Session解码
解码的前提是你得拿到密钥,这个在CTF里一般会有线索给你找到。
脚本在Linux环境中跑,有python2 和python3版本的。
脚本在我的资源里,可以去免费下载
解码:python3 flask_session_cookie_manager3.py decode -s "密钥" -c "session"
改你要改的内容。
加密:python3 flask_session_cookie_manager3.py encode -s "密钥" -t "上面解密出的一串字符串"
解密:
我的这个题目时是要求我们是admin用户才能拿到flag,所以我要将name中的值改为admin
加密:
然后重放到浏览器,刷新即可。
【/home/mohe/.cache/vmware/drag_and_drop】