CTF Web安全

[BSidesCF 2019]Mixer(CBC整块替换)

Posted on 2020-03-18,2 min read

要求以admin登陆。将HTML中的is_admin改为1也不行。
并且cookie中存在一个rack.session和user

仿佛是加密过后的数据

修改下user中的值。发现报错

然后就没思路。看WP了。
这题考点在于CBC的整块替换。比如此处
加密的数据应该是{"first_name":"A1.00000000000000","last_name":"1231","is_admin":0}
前提知识:CBC是以16字节为一个块。然后进行加密

{"first_name":"A
第一个块
1.00000000000000
第二个块
","last_name":"1
第三个块
231","is_admin":
第四个块
0}
第五个块

加密后的数据。分别对应块
比如。这里我有5个块。加密后的数据长度为160。那么前32就是第一块数据。32-64就是第二块数据
依次类推
由于我们只要将is_admin置为1。那么
只要我们构造firest_name为A1.00000000000000
A被划入第一块的数据中。占32位
1.00000000000000加密后占32-64位。我们就可以得到1.000000加密后的值
将这段加密后的值。放入is_admin后面。就成为了1.000000000000000
可以成功绕过判断

接下来。开始构造

b=a[0:128]+a[32:64]+a[128:]
a[0:128]代表数据的前第四个块。
a[32:64]是1.000000的密文
a[128:]是0}的密文。附在最后


替换cookie得到flag

下一篇: [BSidesCF 2019]SVGMagic(xxe)→