不难看出需要让is_admin?这里等于1。f12试过了不好使(哈。
登录成功后会疯狂的暗示:
And you can safely ignore the rack.session cookie. Like actually. But that other cookie, however….
随意输入东西点击login抓包,会产生Cookie:
如果修改了user(仅替换部分字符)里的输入会产生如下报错:
经过数次替换发现user是这么加密的:
{“first_name”:”something”,”last_name”:”something”,”is_admin”:0}
试着改了rack.session一个字符,整个都变了。。
可以猜测,user使用的是ECB 加密,因为如果是 CBC 的话, 前面也会变成乱码。
ECB 加密是 16 位一组, 并且每组互相独立, 加密后每组为 32 位。又因为在JSON 中1.0 = 1,所以如果替换成这样:
第一个块
{“first_name”:”A
第二个块
1.00000000000000第三个块
“,”last_name”:”1第四个块
231″,”is_admin”:第五个块
0}
加密后的第32位到第64位整块都是1啦!这样我们就知道加密后的1是多少,把它加到is_admin,也就是第四个块的后面。
前四个块都不用动了(32*4)复制第二个块到第五个块前面:
替换后获得flag。学到很多。
⚪参考: