[BSidesCF 2019]Mixer

[BSidesCF 2019]Mixer

考点

  • 攻击ECB加密模式

wp

随便输入,登录,提示signature和rack.session不是考察点,并且要把is_admin改成1

登录时请求的URL为/?action=login&first_name=aaaa&last_name=bbbb

登录后的cookie如下,去掉rack.session

user=a90e6740e375b9984967c3b8e56ab0b94cad614ff047478f947f9ac1faa36a84194c8b0116104663ca1187c77513d7b89208e22d7e596f516e88cef6b397fc27;

修改user的值为user=aaaaaaaaaa,提示data not multiple of block length

在原来的基础上修改为aaaaaaaae375b9984967c3b8e56ab0b94cad614ff047478f947f9ac1faa36a84194c8b0116104663ca1187c77513d7b89208e22d7e596f516e88cef6b397fc27

提示内容Error parsing JSON: 765: unexpected token at '-?????>??~???]PIaaa","last_name":"bbbb","is_admin":0}'

说明原来的密文解密后是{"first_name":"aaaa","last_name":"bbbb","is_admin":0}这种形式

在修改了一部分密文后不影响后续的密文解密,典型的ECB模式,分组长度一般是8字节,16字节,32字节。

假设本题分组长度为8字节,通过调整first_name,可以得到如下分组

{"first_
name":"a
aaaaaaaa
","last_
name":"b
bbb","is
_admin":
0}

修改first_name为a1.00000},分组如下

{"first_
name":"a
1.00000}
","last_
name":"b
bbb","is
_admin":
0}

再将密文分成8组,第三组和最后一组对调,解密得到的明文如下,用*代表padding

{"first_
name":"a
0}******
","last_
name":"b
bbb","is
_admin":
1.00000}

这样就满足题目要求了,测试一下,发现不对

再试试分组长度为16的情况

{"first_name":"a
1.0000000000000}
","last_name":"b
bbb","is_admin":
0}

得到密文6c7de5751ce3ab56d3961b695c269643936bbdf01255242e236e2d1d99602ea408f95041eca831ff2b2cfd77210d8fd6a164192494b6804a83ab8daa9bc1503849d11304091af7bdb1de04be0c27ea8a

将密文分成5组,第二组和最后一组对调

6c7de5751ce3ab56d3961b695c269643
400473caf782906ced101bc4cf86e782
baf68ee937fc060a8574b7bdbfdbc7be
186fbf3e093dc9d0c4fb70e8ce2d3bb6
f199d6b133223ed30b735584b65c2003

最后更新于